1. 程式人生 > >最簡單的Python單例模式程式碼

最簡單的Python單例模式程式碼

廢話不扯 直接上程式碼:

# 例項化一個單例
class Singleton(object):
   __instance = None
   __first_init = True

   def __new__(cls, age, name):

       '''
       如果類屬性__instance的值為None,那麼就建立一個物件,並且賦值為這個物件的引用
       保證下次呼叫這個方法時能夠知道之前已經建立過物件了,這樣就保證了只有1個物件
       '''

       if not cls.__instance:
           # return super(Singleton, cls).__new__(cls)
           cls.__instance = super(Singleton, cls).__new__(cls)
           # cls.__instance = object.__new__(cls)
       return cls.__instance

   # def __init__(self,age,name):
   #     self.age = age
   #     self.name = name

   def __init__(self, age, name):
       if self.__first_init:
           self.age = age
           self.name = name
           Singleton.__first_init = False


a = Singleton(18, "laowang")
print(id(a))

b = Singleton(8, "laozhang")
print(id(b))
print(a.age, a.name)
print(b.age, b.name)