鍍金池/ 教程/ Python/ 一、Python 中類也是對象
二、Enum 的源碼
前言
一、Python 模塊簡介
一、List(列表)
五、匿名函數(shù)
三、什么是元類
二、循環(huán)語句
二、模塊的使用
三、第一個 Python 程序
線程與進程
Python
三、條件語句和循環(huán)語句綜合實例
四、對象的描述器
三、類的屬性
一、迭代
五、迭代器和生成器綜合例子
六、運算符相關的魔術方法
一、枚舉類的使用
前言
一、簡明概述
二、Python 的基本數(shù)據(jù)類型
多線程編程
五、作用域
四、包
四、枚舉的比較
四、Python 中的變量
六、類的多態(tài)
一、Python 中類也是對象
一、Python 的 Magic Method
前言
四、生成器
一、面向對象的概念
五、類的繼承
二、類
二、使用 <code>type()</code> 動態(tài)創(chuàng)建類
進程
二、set
三、主模塊和非主模塊
一、字典(Dictionary)
前言
前言
前言
前言
四、集成開發(fā)環(huán)境(IDE): PyCharm
前言
四、函數(shù)的參數(shù)
三、lsit 生成式(列表生成式)
四、自定義元類
四、類的方法
二、函數(shù)傳值問題
二、注釋
一、條件語句
一、Python 語法的簡要說明
三、函數(shù)返回值
三、基本數(shù)據(jù)類型轉換
三、屬性的訪問控制
二、Python 的安裝
前言
三、命名規(guī)范
一、Python 自定義函數(shù)的基本步驟
三、自定義類型的枚舉
五、自定義容器(Container)
二、Python 迭代器
前言
二、tuple(元組)
一、Python 簡介
前言
前言
前言
二、構造(<code>__new__</code>)和初始化(<code>__init__</code>)
前言

一、Python 中類也是對象

在了解元類之前,我們先進一步理解 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'>