預設的元類
你可能聽說 Python 中的所有內容都是物件。這是真的,所有物件都有一個類:
>>> type(1)
int
文字 1 是 int
的一個例項。讓我們宣告一個類:
>>> class Foo(object):
... pass
...
現在讓我們例項化它:
>>> bar = Foo()
什麼是 bar
?
>>> type(bar)
Foo
很好,bar
是 Foo
的一個例項。但是 Foo
本身的類是什麼?
>>> type(Foo)
type
好的,Foo
本身就是 type
的一個例項。type
本身怎麼樣?
>>> type(type)
type
什麼是元類?現在讓我們假裝它只是一個類的一個奇特的名字。小貼士:
- 一切都是 Python 中的一個物件,所以一切都有一個類
- 類的類稱為元類
- 預設的元類是
type
,到目前為止它是最常見的元類
但是你為什麼要知道元類呢?好吧,Python 本身是非常 hackable
的,如果你正在進行超程式設計等高階內容,或者如果你想控制類的初始化方式,那麼元類的概念很重要。