2023年10月4日 元類

2022-08-13 12:51:17 字數 2299 閱讀 1794

metaclass 元類

元類是類的類,是類的模版。

元類是用來控制如何建立類的,正如類是建立物件的模版一樣

元類的例項為類。

type事python的乙個內建元類,用來直接控制生成類,python中任何class定義的類其實都是type類例項化的物件。

class

foo:

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,後面是用字典形式表達引數

print

(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('

>>>>>')

print

(self)

print

(args,kwargs)

obj=object.__new__(self) #

建立乙個新物件 objcet.__new__(foo) 這一步就是產生f1的

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

就是在呼叫foo.__init__()把foo內的init中的引數原封不動的傳過去

print

(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卷積失去了卷積層可以識別 和寬維度上相鄰...