1. 程式人生 > >python之一個簡單的單例模式

python之一個簡單的單例模式

# from 模組名 import 模組裡的方法      #呼叫一個方法
# from 模組名 import *                  #呼叫所有方法

#單列模式    一個類建立物件是同一個

class Shopping:
    '''購物車'''
    __A=None   #私有屬性   私有屬性為了避免外部改值
    __has_init=False  #預設沒有初始值

    def __new__(cls, *args, **kwargs):     #魔法方法,建立物件時首先呼叫它,實質建立一個物件地址
        #判斷是否建立物件
        if cls.__A is None:  #沒有建立過,會建立物件,並記錄下來
            cls.__A=super().__new__(cls)
        return cls.__A                                   #返回物件地址
    def __init__(self):      #單列模式 只應初始化一次
        if self.__has_init==False:   #沒有初始化
            self.total_princ=0
            self.__has_init=True     #初始化之後

#建立頁面1
cart1=Shopping()
cart1.total_princ=200
print(cart1.total_princ)
print(cart1)


cart2=Shopping()
print(cart2.total_princ)
print(cart2)
#cart1 和cart2  的物件指標,指向同一個物件地址,那麼他們的物件就是同一個
#單例模式下,這個類的物件,有且只有唯一一個。
'''
單例模式,一個類建立一個物件

物件地址相同就是同一個物件

'''