[Python3 填坑] 018 組裝類的幾個例子
阿新 • • 發佈:2019-04-15
clas acl 編碼 eth 固定 繼承 內容 meta say
目錄
- 1. print( 坑的信息 )
- 2. 開始填坑
- 2.1 MetaClass 舉例
- 2.2 type 舉例
- 2.3 MetaClass 舉例
1. print( 坑的信息 )
- 挖坑時間:2019/04/07
- 明細
坑的編碼 | 內容 |
---|---|
Py024-2 | MethodType 舉例 |
Py024-3 | type 舉例 |
Py024-4 | MetaClass 舉例 |
2. 開始填坑
2.1 MetaClass 舉例
from types import MethodType class A(): pass def say(self): print("this is say()") a = A() a.say = MethodType(say, A) a.say()
>>>
this is say()
2.2 type 舉例
# 1. 定義類應該具有的成員函數 def say(self): print("this is say()") def eat(self): print("this is eat()") # 2. 用 type 來創建一個類 A = type( "AName", (object, ), {"class_say":say, "class_eat":eat}) # 3. 像正常訪問一樣使用類 a = A() a.class_say() a.class_eat()
>>>
this is say()
this is eat()
2.3 MetaClass 舉例
# 元類寫法是固定的,必須繼承自 type # 元類一般命名以 MetaClass 結尾 class ExampleMetaClass(type): def __new__(cls, region, gender, attrs): print("this is MetaClass") attrs['id_num'] = '9527' attrs['age'] = "18" return type.__new__(cls, region, gender, attrs) # 元類定義完就可以使用 class Person(object, metaclass=ExampleMetaClass): pass york = Person() print(york.id_num)
>>>
this is MetaClass
9527
[Python3 填坑] 018 組裝類的幾個例子