【发布时间】:2011-09-07 14:05:48
【问题描述】:
考虑以下代码:
class AClass():
def defaultMethod(self):
return 1
def __init__(self, methodToUse = defaultMethod):
print (methodToUse(self))
if __name__== "__main__":
AClass()
在这种情况下,不能将 defaultMethod 移动到 __init__ 方法下方,如果这样做,会导致“NameError: name 'defaultMethod' is not defined”
这意味着我需要在 __init__ 之前定义这个方法,否则 Python 不知道它。这再次意味着我不再将 __init__ 作为第一个方法,这让我想知道是否通常将 __init__ 方法放在类的末尾或开头。
【问题讨论】:
-
邮政编码。声明方法的顺序不应该成为真正的问题,除非你正在做一些相当奇怪的事情。
-
我仍然不明白如何要求在一个类中具有一定的方法顺序?你能举个例子吗?
-
@David 执行了你的代码,我没有发现任何错误
-
@eyquem 更改
defaultMethod和__init__的顺序,您会看到问题所在。编译器无法为methodToUse参数分配默认参数,因为在创建__init__时该符号尚不存在。