def __new__(cls): 默认用来进行创建对象 dog=Dog() 此时 1先创建对象,即调用__new__方法 2调用__init__方法初始化 3把创建对象的引用给了dog 所以 Java中的构造方法是两个方法的集合 既创建对象 又初始化
单例(只有一个对象)
class Dog(object): __instance=None __init_flag=False def __new__(cls, *args, **kwargs): #此处*arg可以实现不同参数的修改 if cls.__instance==None: cls.__instance=object.__new__(cls) return cls.__instance else: return cls.__instance def __init(self,name): if Dog.__init_flag==False: #此处可以实现让__init__方法只进行一次 self.name=name Dog.__init_flag=True a=Dog("lala") b=Dog("heihei")
此时a b 都是同样的对象引用 即指向同一个对象