- 准确来说,
__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/