最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建類的方法分析

 更新時(shí)間:2019年06月25日 10:18:14   作者:輕舞肥羊  
這篇文章主要介紹了python實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建類的方法,結(jié)合實(shí)例形式分析了Python動(dòng)態(tài)創(chuàng)建類的原理、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了python實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建類的方法。分享給大家供大家參考,具體如下:

python作為動(dòng)態(tài)語(yǔ)言,如何在運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建類呢(python Creating classes dynamically),這在編程時(shí),有時(shí)候很有用處,動(dòng)態(tài)生成類,給予相應(yīng)的屬性和方法。通常來(lái)說(shuō)有如下兩種方式:

  • 1. 根據(jù)條件,硬編碼實(shí)現(xiàn)。
  • 2. 利用 type metaclass  來(lái)實(shí)現(xiàn)。

根據(jù)條件硬編碼

def choose_class(name):
 if name == 'foo':
  class Foo(object):
   pass
  return Foo # 返回一個(gè)類,而不是實(shí)例
 else:
  class Bar(object):
   pass
  return Bar
MyClass = choose_class('foo') 
print MyClass # 返回一個(gè)類,而不是實(shí)例
print MyClass() # 創(chuàng)建一個(gè)實(shí)例

運(yùn)行后,結(jié)果為:

<class '__main__.Foo'>
<__main__.Foo object at 0x00BA8370>

但其實(shí)這并不是那么動(dòng)態(tài),你還得在程序中寫完整個(gè)class的定義。既然class是對(duì)象,也必定可以由什么東西創(chuàng)建出來(lái)。在python中,當(dāng)你用 class 關(guān)鍵字的時(shí)候,python將自動(dòng)創(chuàng)建這個(gè)object, 有什么方法能手動(dòng)創(chuàng)建呢,那就是 type 方法. 這是一個(gè)很特殊的方法,能夠創(chuàng)建一個(gè)類. type 的語(yǔ)法如下:

type(name of the class, 
  tuple of the parent class (for inheritance, can be empty), 
  dictionary containing attributes names and values)

按照這個(gè)語(yǔ)法規(guī)則,做如下例子:

def echo_msg(self):
 print self.msg
print '===dynamic create class==='+ '*'*50
MyClass = type('MyClass',(object,),{"a":123,"b":"summer","msg":"test message","echo_msg":echo_msg})
print MyClass.a
myclass = MyClass()
myclass.echo_msg()
print myclass.a,myclass.b
print '===dynamic create subclass==='+ '*'*50
MySubClass = type('MySubClass',(MyClass,),{"c":"c-value"})
print MySubClass.c,MySubClass.a,MySubClass.b
print issubclass(MySubClass, MyClass)
mysubclass = MySubClass()
mysubclass.echo_msg()

運(yùn)行結(jié)果如下:

===dynamic create class===**************************************************
123
test message
123 summer
===dynamic create subclass===**************************************************
c-value 123 summer
True
test message

這個(gè)例子利用  type 創(chuàng)建了一個(gè)MyClass 類,然后又創(chuàng)建了 MySubClass 繼承了MyClass 類,并綁定了屬性,方法。MySubClass 也綁定自己特有的屬性,同時(shí)又繼承了基類的屬性,方法。

這樣就實(shí)現(xiàn)了,在python 中動(dòng)態(tài)創(chuàng)建類,主要功臣就是 type 方法,為什么type 有這么厲害,其最終原因是:type 是 metaclass ,元類,用來(lái)創(chuàng)建類的類。打個(gè)比方:

Class=MetaClass()
instance=Class()

什么是 metaclass ,又將怎么利用呢,后面的文章將詳細(xì)講解 python metaclass.

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python中url標(biāo)簽使用知識(shí)點(diǎn)總結(jié)

    Python中url標(biāo)簽使用知識(shí)點(diǎn)總結(jié)

    這篇文章主要介紹了Python中url標(biāo)簽使用知識(shí)點(diǎn)以及相關(guān)實(shí)例代碼,需要的朋友們參考下。
    2020-01-01
  • Pycharm中flask開(kāi)啟debug模式的詳細(xì)流程

    Pycharm中flask開(kāi)啟debug模式的詳細(xì)流程

    PyCharm是一個(gè)強(qiáng)大的集成開(kāi)發(fā)環(huán)境(IDE),非常適合Python開(kāi)發(fā)者,包括Flask框架,當(dāng)你在使用Flask開(kāi)發(fā)Web應(yīng)用時(shí),Debug功能是非常重要的,它允許你在運(yùn)行時(shí)檢查程序的狀態(tài)、調(diào)試代碼錯(cuò)誤,本文將介紹Pycharm中flask開(kāi)啟debug模式的詳細(xì)流程,需要的朋友可以參考下
    2024-08-08
  • Python3網(wǎng)絡(luò)爬蟲中的requests高級(jí)用法詳解

    Python3網(wǎng)絡(luò)爬蟲中的requests高級(jí)用法詳解

    本節(jié)我們?cè)賮?lái)了解下 Requests 的一些高級(jí)用法,如文件上傳,代理設(shè)置,Cookies 設(shè)置等等。感興趣的朋友跟隨小編一起看看吧
    2019-06-06
  • Python函數(shù)調(diào)用追蹤實(shí)現(xiàn)代碼

    Python函數(shù)調(diào)用追蹤實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python函數(shù)調(diào)用追蹤實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 基于Django的樂(lè)觀鎖與悲觀鎖解決訂單并發(fā)問(wèn)題詳解

    基于Django的樂(lè)觀鎖與悲觀鎖解決訂單并發(fā)問(wèn)題詳解

    這篇文章主要介紹了基于Django的樂(lè)觀鎖與悲觀鎖解決訂單并發(fā)問(wèn)題詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python編程學(xué)習(xí)使用管道Pipe編寫優(yōu)化代碼

    python編程學(xué)習(xí)使用管道Pipe編寫優(yōu)化代碼

    大家好,今天這篇文章我將詳細(xì)講解 Pipe 如何讓你的代碼更加簡(jiǎn)潔的方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • python中pycurl庫(kù)的用法實(shí)例

    python中pycurl庫(kù)的用法實(shí)例

    這篇文章主要介紹了python中pycurl庫(kù)的用法實(shí)例,可實(shí)現(xiàn)從指定網(wǎng)址讀取網(wǎng)頁(yè)的功能,需要的朋友可以參考下
    2014-09-09
  • Python pandas RFM模型應(yīng)用實(shí)例詳解

    Python pandas RFM模型應(yīng)用實(shí)例詳解

    這篇文章主要介紹了Python pandas RFM模型應(yīng)用,結(jié)合實(shí)例形式詳細(xì)分析了pandas RFM模型的概念、原理、應(yīng)用及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • Python基于jieba分詞實(shí)現(xiàn)snownlp情感分析

    Python基于jieba分詞實(shí)現(xiàn)snownlp情感分析

    情感分析(sentiment analysis)是2018年公布的計(jì)算機(jī)科學(xué)技術(shù)名詞,它可以根據(jù)文本內(nèi)容判斷出所代表的含義是積極的還是負(fù)面的等。本文將通過(guò)jieba分詞實(shí)現(xiàn)snownlp情感分析,感興趣的可以了解一下
    2023-01-01
  • python搜索指定目錄的方法

    python搜索指定目錄的方法

    這篇文章主要介紹了python搜索指定目錄的方法,涉及Python操作目錄的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

舞阳县| 佛坪县| 平远县| 韩城市| 榆中县| 宿迁市| 三穗县| 新巴尔虎右旗| 宁津县| 石嘴山市| 安溪县| 牟定县| 河西区| 德令哈市| 木里| 克山县| 承德县| 西青区| 元谋县| 武城县| 辽阳市| 巍山| 罗城| 布尔津县| 介休市| 博湖县| 潮州市| 五指山市| 江永县| 正镶白旗| 共和县| 曲靖市| 吉安县| 长治市| 嘉禾县| 湘西| 中江县| 蓬莱市| 大宁县| 花垣县| 博乐市|