[英]Python: why __init__ method sometimes isn't called?
我有以下代码:
class Spam:
def __new__(self):
self.__init__(self)
print("1", end = " ")
def __init__(self):
print("2", end = " ")
class Eggs(Spam):
def __new__(self):
print("3", end = " ")
def __init__(self):
print("4", end = " ")
e = Eggs()
s = Spam()
有人可以解释为什么结果是 3 2 1,即 4 没有打印出来吗? 而文档说
“在Python新()魔术方法在init()方法之前隐式调用。新的()方法返回一个新的对象,然后将其由init()初始化”
代码应如下所示才能工作,
class Spam:
def __init__(self):
print("2", end = " ")
class Eggs(Spam):
def __init__(self):
print("4", end = " ")
e = Eggs()
s = Spam()
您不必编写 new() 方法,因为 Python 已经为您完成了所有工作,无需编写它。 如果你运行我上面的代码,你会得到结果 4 2。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.