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