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