- 准确来说,
__new__才是构造函数 __new__执行在__init__之前- 如果
__new__不返回一个cls实例,则__init__不会被执行
class A():
def __new__(self,*args,**kwargs):
print("new")
return object.__new__(self)
def __init__(self):
print("init")
a=A()
output:
new
init
单例模式可以用__new__来实现: https://javabullshit.github.io/posts/singleton/