Python 中的元類到底是什麼?這篇恐怕是最清楚的了
阿新 • • 發佈:2020-06-29
類作為物件
=====
在理解元類之前,您需要掌握 Python 的類。Python 從 Smalltalk 語言中借用了一個非常特殊的類概念。
在大多數語言中,類只是描述如何產生物件的程式碼段。在 Python 中也是如此:
```
>>> class ObjectCreator(object):
... pass
...
>>> my_object = ObjectCreator()
>>> print(my_object)
<__main__.ObjectCreator object at 0x8974f2c>
```
但是Python的類更甚。在Python中,Python的類也是物件。
對的,也是物件。
一旦使用關鍵字`class`,Python 就會執行它並建立一個物件。示例程式碼:
```
>>> class ObjectCreator(object):
... pass
...
```
如上程式碼在記憶體中建立一個名稱為 “ObjectCreator” 的物件。
**這個物件(類)本身具有建立物件(例項)的能力,這就是為什麼它也是一個類**。
但是,**它仍然是一個物件**,因為:
* 您可以將其分配給變數
* 你可以複製它
* 您可以為其新增屬性
* 您可以將其作為函式引數傳遞
例如:
```
>>> print(ObjectCreator) # 你可以列印一個類,因為它是一