我已经阅读了其他问题来解释__init__
和__new__
之间的区别,但我只是不明白为什么在下面的代码中使用python 2:
init
和Python3:
new
init
示例代码:
class ExampleClass():
def __new__(cls):
print ("new")
return super().__new__(cls)
def __init__(self):
print ("init")
example = ExampleClass()
答案 0 :(得分:7)
要在Python 2.x中使用__new__
,该类应为new-style class(派生自object
的类)。
对super()
的调用与Python 3.x的调用不同。
class ExampleClass(object): # <---
def __new__(cls):
print("new")
return super(ExampleClass, cls).__new__(cls) # <---
def __init__(self):
print("init")