Python 面向对象

Python Object Oriented

我在 python 和 运行 中有点玩面向对象编程遇到了一个我以前没有遇到过的错误..:[=​​12=]

class Main:
    def __init__(self, a , b):
        self.a = a
        self.b = b

    def even(self):
        start = self.a
        slut = self.b
        while start <= slut:
            if start % 2 == 0:
                yield start
            start += 1

    def odd(self):
        start = self.a
        slut = self.b
        while start <= slut:
            if start % 2 != 0:
                yield start
            start += 1

    def display():
        evens = list(num.even())
        odds = list(num.odd())
        print(f"{evens}'\n'{odds}")

num = Main(20, 50)

Main.display()

看看最后一个 class 方法,其中应该有一个 'self' 作为程序运行的参数。这是为什么?我认为每个 class 方法都应该包含一个 'self' 作为参数?该程序无法使用它

应该有一个 self 参数,如果它是一个实例方法,如果你试图这样使用它,你会得到一个错误,即 num.display().

但是,您是通过 class 调用它,而 Main.display 只是 returns 函数本身,而不是 method,所以它按原样工作。

鉴于您在正文中使用了 Main(即 num)的 specific 实例,您应该将其替换为 self:

def display(self):
    evens = list(self.even())
    odds = list(self.odd())
    print(f"{evens}'\n'{odds}")

并用

调用它
num.display()