元類實現單例

2022-06-09 03:51:09 字數 1428 閱讀 8098

單例1:元類的單例

1

import

settings23

4class

mymeat(type):

5呼叫__init__得到mysql呼叫之前的時候就有乙個預設的例項化的結果

6def

__init__

(self, class_name, class_bases, class_dic):

7建立乙個初始化的物件,並把這個物件儲存下來

8 self.__instance = self.__new__

(self)

9初始化物件的屬性就是檔案中的資料

10 self.__init__(self.__instance

, settings.ip, settings.port)

11繼承子類的屬性

12 super(mymeat, self).__init__

(class_name, class_bases, class_dic)

1314

呼叫__call__的方法就是自定義mysql這個物件的呼叫過程要怎麼實現

15def

__call__(self, *args, **kwargs): #

self=mysql

16if len(args) == 0 and len(kwargs) == 0: 判斷是否傳了引數,沒傳參就返回準備好的例項化物件,就是'

檔案物件'17

return self.__instance

18否則就重新例項化乙個新的物件(包括屬性,返回這個物件)

19 obj = self.__new__

(self)

20 self.__init__(obj, *args, **kwargs)

21return

obj22

2324

自定義乙個元類

25class mysql(object, metaclass=mymeat):

2627

def__init__

(self, ip, port):

28 self.ip =ip

29 self.port =port

3031

32 obj1 =mysql()

33 obj2 =mysql()

34 obj3 =mysql()

35 obj4 = mysql('

100.100.100.11

', 3320)

36print(obj1.__dict__)37

print(obj2.__dict__)38

print(obj3.__dict__)39

print(obj4.__dict__)

python元類單例 元類實現單例模式

python中的類也是物件。元類就是用來建立這些類 物件 的,元類就是類的類,你可以這樣理解為 myclass metaclass 元類建立 myobject myclass 類建立例項 實際上myclass就是通過type 來創建立出myclass類,它是type 類的乙個例項 同時myclass...

python 物件導向單例元類

通過類方法來實現單例,這樣我在執行乙個函式中建立物件,但是呼叫多次只是乙個例項。class person classmethod defsingle instancee cls,args,kwargs if notgetattr person,instance cls.instance person...

學習筆記01 單例和元類

參考個人覺得講解的很透徹。元類是乙個類的類,該類是它的元類的乙個例項。類的定義由它的元類決定,所以我們用類a建立乙個類時,python通過呼叫a type name,bases,dict 建立它,name 類的名字,bases 基類,dict 屬性變數。如下兩段 其實作用一樣。建立乙個hello類,...