欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python實現動態創建類的方法分析

系統 1610 0

本文實例講述了python實現動態創建類的方法。分享給大家供大家參考,具體如下:

python作為動態語言,如何在運行時動態創建類呢(python Creating classes dynamically),這在編程時,有時候很有用處,動態生成類,給予相應的屬性和方法。通常來說有如下兩種方式:

  • 1. 根據條件,硬編碼實現。
  • 2. 利用 type metaclass? 來實現。

根據條件硬編碼

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


          

運行后,結果為:


<__main__.Foo object at 0x00BA8370>

但其實這并不是那么動態,你還得在程序中寫完整個class的定義。既然class是對象,也必定可以由什么東西創建出來。在python中,當你用 class 關鍵字的時候,python將自動創建這個object, 有什么方法能手動創建呢,那就是 type 方法. 這是一個很特殊的方法,能夠創建一個類. type 的語法如下:

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


          

按照這個語法規則,做如下例子:

            
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()


          

運行結果如下:

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

這個例子利用? type 創建了一個MyClass 類,然后又創建了 MySubClass 繼承了MyClass 類,并綁定了屬性,方法。MySubClass 也綁定自己特有的屬性,同時又繼承了基類的屬性,方法。

這樣就實現了,在python 中動態創建類,主要功臣就是 type 方法,為什么type 有這么厲害,其最終原因是:type 是 metaclass ,元類,用來創建類的類。打個比方:

            
Class=MetaClass()
instance=Class()


          

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

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python面向對象程序設計入門與進階教程》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久草在线观看福利视频 | 福利在线播放 | 91精品啪国产在线观看免费牛牛 | 色网在线播放 | 日韩欧美视频在线 | 蜜桃视频在线观看免费视频网站www | 天天看天天操 | 99久久精品国产一区二区成人 | 成人网av | 亚洲久草 | 欧美综合伊人久久 | 欧美一级在线观看 | 久久免费看少妇高潮A片麻豆 | 亚洲色域网 | 日韩精选视频 | 久久影片| 精品国产一区二区三区久久久 | 久久婷婷是五月综合色狠狠 | 久草国产精品 | 欧美高清性色生活片免费观看 | 成人福利网| 国产夜色 | 狠狠色欧美亚洲狠狠色www | 天天干夜夜爽 | 欧美视频网站 | 免费高清精品国偷自产在线 | 91成人午夜性a一级毛片 | www久久久久 | 欧美一级片 | 一级少妇女片 | 99热.com| 天天干天天操天天射 | 九九视频只有精品六 | 国产精品一区二区久久久久 | 99热久久66是国产免费 | 4hu44四虎在线观看 | 在线看av网址 | 天天搞天天搞 | 亚洲我不卡 | 色天天爱天天狠天天透 | 91九色视频观看 |