Python 中的 metaclass 介绍


Author: yifei / Created: April 20, 2018, 10:04 a.m. / Modified: April 20, 2018, 10:11 a.m. / Edit

翻译自:https://stackoverflow.com/a/6581949/1061155

类就是对象

在理解 metaclass 之前,你需要理解 Python 中的类。Python 中关于类的定义非常奇怪,相关概念是从 Smalltalk 中引入的。

在大多数的语言中,类只是描述如何产生对象的一段代码。在 Python 中也部分成立:

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

>>> my_object = ObjectCreator()
>>> print(my_object)
<__main__.ObjectCreator object at 0x8974f2c>

但是 Python 中的类不只是这样,他们还是对象。

是的,对象。

只要你使用了 class 关键字,Python 就会执行它并创建一个对象,下面的指令:

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

创建了一个名叫 "ObjectCreator" 的内存中的对象。

这个对象(类)本身可以创建对象(实例),因此它也被称作类。

未完待续


有任何问题可以发邮件到 kongyifei (at) gmail.com 讨论