麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

深入理解Python中的元類(metaclass)

2020-02-23 06:25:22
字體:
來源:轉載
供稿:網友

譯注:這是一篇在Stack overflow上很熱的帖子。提問者自稱已經掌握了有關Python OOP編程中的各種概念,但始終覺得元類(metaclass)難以理解。他知道這肯定和自省有關,但仍然覺得不太明白,希望大家可以給出一些實際的例子和代碼片段以幫助理解,以及在什么情況下需要進行元編程。于是e-satis同學給出了神一般的回復,該回復獲得了985點的贊同點數,更有人評論說這段回復應該加入到Python的官方文檔中去。而e-satis同學本人在Stack Overflow中的聲望積分也高達64271分。以下就是這篇精彩的回復(提示:非常長)

類也是對象

在理解元類之前,你需要先掌握Python中的類。Python中類的概念借鑒于Smalltalk,這顯得有些奇特。在大多數編程語言中,類就是一組用來描述如何生成一個對象的代碼段。在Python中這一點仍然成立:
代碼如下:
>>> class ObjectCreator(object):
…       pass

>>> my_object = ObjectCreator()
>>> print my_object
<__main__.ObjectCreator object at 0x8974f2c>

但是,Python中的類還遠不止如此。類同樣也是一種對象。是的,沒錯,就是對象。只要你使用關鍵字class,Python解釋器在執行的時候就會創建一個對象。下面的代碼段:
代碼如下:
>>> class ObjectCreator(object):
…       pass


將在內存中創建一個對象,名字就是ObjectCreator。這個對象(類)自身擁有創建對象(類實例)的能力,而這就是為什么它是一個類的原因。但是,它的本質仍然是一個對象,于是乎你可以對它做如下的操作:

1.你可以將它賦值給一個變量
2.你可以拷貝它
3.你可以為它增加屬性
4.你可以將它作為函數參數進行傳遞

下面是示例:
代碼如下:
>>> print ObjectCreator     # 你可以打印一個類,因為它其實也是一個對象
<class '__main__.ObjectCreator'>
>>> def echo(o):
…       print o

>>> echo(ObjectCreator)                 # 你可以將類做為參數傳給函數
<class '__main__.ObjectCreator'>
>>> print hasattr(ObjectCreator, 'new_attribute')
Fasle
>>> ObjectCreator.new_attribute = 'foo' #  你可以為類增加屬性
>>> print hasattr(ObjectCreator, 'new_attribute')
True
>>> print ObjectCreator.new_attribute
foo
>>> ObjectCreatorMirror = ObjectCreator # 你可以將類賦值給一個變量
>>> print ObjectCreatorMirror()
<__main__.ObjectCreator object at 0x8997b4c>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产 日韩 一区 | 欧美综合在线观看 | 国产一级小视频 | 久久九九热re6这里有精品 | 91真视频| xxnxx中国18 | 国产日韩久久久久69影院 | 91视频站 | 黄色网址免费在线播放 | 欧美无限资源 | 日日狠狠久久 | 欧美黄色免费视频 | 国产91一区二区三区 | 九九热免费精品视频 | 久久国产夫妻视频 | 久久av免费 | 亚洲精品成人久久 | 国产免费最爽的乱淫视频a 毛片国产 | 中国洗澡偷拍在线播放 | 被啪羞羞视频在线观看 | 色中色综合网 | 91成人免费在线视频 | 国产精品成人久久久久a级 av电影在线免费 | 日韩视频在线观看免费 | 久久成人动漫 | 国产1区在线观看 | 久久色网站 | 欧美一级黄色免费看 | 毛片一级免费看 | 黄视频网站免费 | 久久精品视频亚洲 | 久久久久久麻豆 | 黄色视品 | 欧美一级片一区 | 久久精品免费国产 | 精品国产91久久久久久浪潮蜜月 | 日本黄色免费片 | 粉嫩粉嫩一区二区三区在线播放 | 亚洲精品tv久久久久久久久久 | 久久久久夜色精品国产老牛91 | 欧美城网站地址 |