這篇文章主要介紹python中metaclass元類是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
元編程,一個(gè)聽起來(lái)特別酷的詞,強(qiáng)大的Lisp在這方面是好手,對(duì)于Python,盡管沒有完善的元編程范式,一些天才的開發(fā)者還是創(chuàng)作了很多元編程的魔法。Django的ORM就是元編程的一個(gè)很好的例子。
一切都是對(duì)象
Python里一切都是對(duì)象(object
),基本數(shù)據(jù)類型,如數(shù)字,字串,函數(shù)都是對(duì)象。對(duì)象可以由類(class
)進(jìn)行創(chuàng)建。既然一切都是對(duì)象,那么類是對(duì)象嗎?
是的,類也是對(duì)象,那么又是誰(shuí)創(chuàng)造了類呢?答案也很簡(jiǎn)單,也是類,一個(gè)能創(chuàng)作類的類,就像上帝一樣,開啟了萬(wàn)物之始。這樣的類,稱之為元類(classmeta
)。
類的定義
對(duì)象是通過類創(chuàng)建的,這個(gè)很好理解。例如下面的代碼:
class Bar(object): pass bar = Bar() print(bar, bar.__class__) # <__main__.Bar object at 0x101eb4630>print(Bar, Bar.__class__) #