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

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

三、什么是元類

通過上面的介紹,終于模模糊糊的帶到元類這里來了。可是我們到現(xiàn)在還不知道元類是什么東東。

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

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

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

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

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

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

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

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

print(fu.__class__)

# 實例
class eat(object):
    pass

mEat = eat()

print(mEat.__class__)

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

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

可以看到,上面的所有東西,也就是所有對象都是通過類來創(chuàng)建的,那么我們可能會好奇,__class____class__ 會是什么呢?換個說法就是,創(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 和對象實例 mEat__class____class__ 打印出來的結(jié)果。也可以說是他們類的類打印結(jié)果。發(fā)現(xiàn)打印出來的 class 都是 type 。

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

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