默认的元类

你可能听说 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 的,如果你正在进行元编程等高级内容,或者如果你想控制类的初始化方式,那么元类的概念很重要。