python __new__ 和單例
阿新 • • 發佈:2018-11-30
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 都是同樣的物件引用 即指向同一個物件