在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

三、什么是元類

通過(guò)上面的介紹,終于模模糊糊的帶到元類這里來(lái)了??墒俏覀兊浆F(xiàn)在還不知道元類是什么東東。

我們創(chuàng)建類的時(shí)候,大多數(shù)是為了創(chuàng)建類的實(shí)例對(duì)象。那么元類呢?元類就是用來(lái)創(chuàng)建類的。也可以換個(gè)理解方式就是:元類就是類的類。

通過(guò)上面 type() 函數(shù)的介紹,我們知道可以通過(guò) type() 函數(shù)創(chuàng)建類:

MyClass = type('MyClass', (), {})

實(shí)際上 type() 函數(shù)是一個(gè)元類。type() 就是 Python 在背后用來(lái)創(chuàng)建所有類的元類。

那么現(xiàn)在我們也可以猜到一下為什么 type() 函數(shù)是 type 而不是 Type呢?

這可能是為了和 str 保持一致性,str 是用來(lái)創(chuàng)建字符串對(duì)象的類,而 int 是用來(lái)創(chuàng)建整數(shù)對(duì)象的類。type 就是創(chuàng)建類對(duì)象的類。你可以通過(guò)檢查 __class__ 屬性來(lái)看到這一點(diǎn)。Python 中所有的東西,注意喔,這里是說(shuō)所有的東西,他們都是對(duì)象。這包括整數(shù)、字符串、函數(shù)以及類。它們?nèi)慷际菍?duì)象,而且它們都是從一個(gè)類創(chuàng)建而來(lái)。

# 整形
age = 23
print(age.__class__)
# 字符串
name = '兩點(diǎn)水'
print(name.__class__)

# 函數(shù)
def fu():
    pass

print(fu.__class__)

# 實(shí)例
class eat(object):
    pass

mEat = eat()

print(mEat.__class__)

輸出的結(jié)果如下:

<class 'int'>
<class 'str'>
<class 'function'>
<class '__main__.eat'>

可以看到,上面的所有東西,也就是所有對(duì)象都是通過(guò)類來(lái)創(chuàng)建的,那么我們可能會(huì)好奇,__class____class__ 會(huì)是什么呢?換個(gè)說(shuō)法就是,創(chuàng)建這些類的類是什么呢?

我們可以繼續(xù)在上面的代碼基礎(chǔ)上新增下面的代碼:

print(age.__class__.__class__)
print(name.__class__.__class__)
print(fu.__class__.__class__)
print(mEat.__class__.__class__)

輸出的結(jié)果如下:

<class 'type'>
<class 'type'>
<class 'type'>
<class 'type'>

認(rèn)真觀察,再理清一下,上面輸出的結(jié)果是我們把整形 age ,字符創(chuàng) name ,函數(shù) fu 和對(duì)象實(shí)例 mEat__class____class__ 打印出來(lái)的結(jié)果。也可以說(shuō)是他們類的類打印結(jié)果。發(fā)現(xiàn)打印出來(lái)的 class 都是 type 。

一開始也提到了,元類就是類的類。也就是元類就是負(fù)責(zé)創(chuàng)建類的一種東西。你也可以理解為,元類就是負(fù)責(zé)生成類的。而 type 就是內(nèi)建的元類。也就是 Python 自帶的元類。

上一篇:前言下一篇:前言