metaclass 元類
元類是類的類,是類的模版。
元類是用來控制如何建立類的,正如類是建立物件的模版一樣
元類的例項為類。
type事python的乙個內建元類,用來直接控制生成類,python中任何class定義的類其實都是type類例項化的物件。
classfoo:
pass
f1=foo() #
f1是通過foo類例項化的物件
print(type(f1))#
用type函式檢視是誰的類
print(type(foo))#
類的類就是type
def__init__(self,name,age):#
如果需要再type中增加建構函式,就需要將函式放到最外面
self.name=name
self.age=age
ffo=type('
ffo',(object,),) #
用type生成類,第乙個事類名,第二個元祖形式是父類,因為是新式類所以父類預設就是object,後面是用字典形式表達引數
(ffo)
f1=ffo('
sxj',11)
print(f1.__dict__)
可以通過繼承type來自定義元類。
class mytype(type): #定義元類
def__init__
(self,a,b,c):
print('
元類建構函式執行')
print(self,'
\n',a,'
\n',b,'
\n',c) #
self 就是元類mytype的例項,也就是foo
def__call__(self, *args, **kwargs):
print('
>>>>>')
(self)
(args,kwargs)
obj=object.__new__(self) #
建立乙個新物件 objcet.__new__(foo) 這一步就是產生f1的
self.__init__(obj,*args, **kwargs)#
就是在呼叫foo.__init__()把foo內的init中的引數原封不動的傳過去
(obj)
return obj #
返回值賦予給f1
class foo(metaclass=mytype):#
宣告元類 foo=mytype('foo',(object,),),傳遞了4個引數給mytype,觸發init方法,所以mytype中的init需要4個引數
def__init__
(self,name):
self.name=name #
f1.name=name
f1=foo('
sxj') #
例項化會觸發init 和call
print(f1.__dict__)
元類建構函式執行
foo
() >>>>>
('sxj',) {}
<__main__.foo object at 0x102176f98>
精簡版
class mytype(type): #定義元類
def__init__
(self,a,b,c):
print('
元類建構函式執行')
def__call__(self, *args, **kwargs):
obj=object.__new__(self) #
建立乙個新物件 objcet.__new__(foo) 這一步就是產生f1的
self.__init__(obj,*args, **kwargs)#
就是在呼叫foo.__init__()把foo內的init中的引數原封不動的傳過去
return obj #
返回值賦予給f1
class foo(metaclass=mytype):#
宣告元類 foo=mytype('foo',(object,),),傳遞了4個引數給mytype,觸發init方法,所以mytype中的init需要4個引數
def__init__
(self,name):
self.name=name #
f1.name=name
f1=foo('
sxj') #
例項化會觸發init 和call
2023年10月16日總結
今天晚上打比賽又是原題,可是做了好幾次原題沒有一次可以全部做完,甚至感覺多做一道都是奢侈。感覺自己越來越不配,不配去繼續呆在這裡,因為自己真的是太懶惰了,不會的題不想著去解決,永遠只停留在之前,只停留在做水題的階段,只能夠享受做水題提交ac的喜悅感,感覺太容易滿足,一點都沒有成長。今天費老師也提到山...
2023年10月23日總結
這幾天還是接著看數論,有時候寫 都會被自己蠢哭,昨天做51nod 數論做不下去了,就在組合數學裡找了幾個 然後好幾次卡死在細節上,最好笑的是有乙個題只是樣例過了。這幾天看知識感覺沒有規律,就是感覺知識很混亂,沒有一點條理,越來越感覺數論的知識體系很混亂,可能是自己還沒有明白吧,就是很難受,越看越難受...
2023年4月13日總結
工具 bugly 解決辦法 1 配置android sdk 和 應用公升級 效果 如下圖 檢視異常統計 檢視異常錯誤 運營統計檢視 更新應用 紙牌 二維向量 1 x 1 卷積層 與 全連線層 1 卷積視窗形狀為1 1 kh kw 1 的多通道卷積層 2 1 1卷積失去了卷積層可以識別 和寬維度上相鄰...