我在python中玩面向对象的编程,遇到了一个我以前从未遇到过的错误:
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()
看看最后一个类方法,其中应该有一个“self”作为Work..Why程序的参数,是吗?我认为每个类方法都应该包含一个“自我”作为参数?这个程序不能用它
发布于 2019-11-03 18:53:52
如果打算作为实例方法,应该有一个self
参数,如果您试图使用它,即num.display()
,您将得到一个错误。
但是,您是通过类调用它的,Main.display
只是返回函数本身,而不是method
的实例,因此它按-原样工作。
假设您在主体中使用了特定的Main
实例(即num
),那么您应该用self
替换它
def display(self):
evens = list(self.even())
odds = list(self.odd())
print(f"{evens}'\n'{odds}")
并调用它
num.display()
https://stackoverflow.com/questions/58683503
复制相似问题