【发布时间】:2020-12-28 18:49:54
【问题描述】:
您好,我正在学习 OOP 和类,但对类的实现有些困惑。下面,我有两组相同的代码,在定义类中的方法后,我尝试运行它们的方式略有不同。我只是不确定为什么第一个代码运行而第二个代码没有运行,因为我觉得我在做同样的事情?此外,在循环完成后运行第一个代码时,我得到“无”,任何想法为什么会发生这种情况?除此之外,我知道您可以使用一些迭代器,但只是想知道下面用于循环内容的方法是否不正确或有问题?
class i:
def __init__(self,number):
self.number=number
def fun(self):
for i in range(self.number):
print(i)
kj=i(9)
print(kj.fun())
class i:
def __init__(self,number):
self.number=number
def fun(self):
for i in range(self.number):
print(i)
kj=i()
print(kj.fun(9))
【问题讨论】:
-
kj.fun()什么也不返回,这就是为什么打印它的结果会给出None。你只在那个函数中打印东西,你永远不会返回任何东西。至于循环你正在做的方式是“正确的”,如果没有更多的上下文,这是不可能说的。无论如何,您应该按照规则在每个帖子中问一个问题。 -
你的第二个 sn-p 不正确,因为
i.__init__需要一个number参数,但是当你实例化i()时你没有传入一个参数。这也是不正确的,因为您向kj.fun传递了一个附加参数,而它预计不会看到多个参数。两个 sn-ps 最后都打印None,因为您正在打印kj.fun(9)返回的值,这将是None,因为fun方法没有显式返回任何内容。