在了解元類之前,我們先進一步理解 Python 中的類,在大多數(shù)編程語言中,類就是一組用來描述如何生成一個對象的代碼段。在 Python 中這一點也是一樣的。
class ObjectCreator(object):
pass
mObject = ObjectCreator()
print(mObject)
輸出結果:
<__main__.ObjectCreator object at 0x00000000023EE048>
但是,Python 中的類有一點跟大多數(shù)的編程語言不同,在 Python 中,可以把類理解成也是一種對象。對的,這里沒有寫錯,就是對象。
為什么呢?
因為只要使用關鍵字 class
,Python 解釋器在執(zhí)行的時候就會創(chuàng)建一個對象。
如:
class ObjectCreator(object):
pass
當程序運行這段代碼的時候,就會在內存中創(chuàng)建一個對象,名字就是ObjectCreator。這個對象(類)自身擁有創(chuàng)建對象(類實例)的能力,而這就是為什么它是一個類的原因。但是,它的本質仍然是一個對象,于是我們可以對它做如下的操作:
class ObjectCreator(object):
pass
def echo(ob):
print(ob)
mObject = ObjectCreator()
print(mObject)
# 可以直接打印一個類,因為它其實也是一個對象
print(ObjectCreator)
# 可以直接把一個類作為參數(shù)傳給函數(shù)(注意這里是類,是沒有實例化的)
echo(ObjectCreator)
# 也可以直接把類賦值給一個變量
objectCreator = ObjectCreator
print(objectCreator)
輸出的結果如下:
<__main__.ObjectCreator object at 0x000000000240E358>
<class '__main__.ObjectCreator'>
<class '__main__.ObjectCreator'>
<class '__main__.ObjectCreator'>