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()
我在 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()