預設的元類

你可能聽說 Python 中的所有內容都是物件。這是真的,所有物件都有一個類:

>>> type(1)
int

文字 1 是 int 的一個例項。讓我們宣告一個類:

>>> class Foo(object):
...    pass
...

現在讓我們例項化它:

>>> bar = Foo()

什麼是 bar

>>> type(bar)
Foo

很好,barFoo 的一個例項。但是 Foo 本身的類是什麼?

>>> type(Foo)
type

好的,Foo 本身就是 type 的一個例項。type 本身怎麼樣?

>>> type(type)
type

什麼是元類?現在讓我們假裝它只是一個類的一個奇特的名字。小貼士:

  • 一切都是 Python 中的一個物件,所以一切都有一個類
  • 類的類稱為元類
  • 預設的元類是 type,到目前為止它是最常見的元類

但是你為什麼要知道元類呢?好吧,Python 本身是非常 hackable 的,如果你正在進行超程式設計等高階內容,或者如果你想控制類的初始化方式,那麼元類的概念很重要。