1. 程式人生 > >單例模式(mark)

單例模式(mark)

# 單例模式 控制類只能建立一個例項物件

class Person(object):

    instance = None   # 建立一個值為None的類屬性為0

    is_first_run = True    # 如果值為True說明是第一次建立物件,若為False說明不是第一次建立物件

    def __new__(cls, *args, **kwargs):

        if cls.instance == None:

            cls.instance = object.__new__(cls)

            return cls.instance

       
    def __init__(self, name):
        if Person.is_first_run:  # 只有第一次建立物件的時候,才需要執行屬性的初始化
            self.name = name
            Person.is_first_run = False

    def set_name(self, new_name):  # 如果要修改單例物件的屬性,最好是通過呼叫方法
        self.name = new_name