国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

動態(tài)創(chuàng)建類實例代碼

2020-02-23 04:45:47
字體:
供稿:網(wǎng)友
例如:
import mymodule
myobject = mymodule.myclass()
或者
from mymodule import myclass
myobject = myclass()

如果要在程序中動態(tài)地創(chuàng)建類實例,也一樣要分兩步走,例如:
m = __import__('mymodule')
c = getattr(m, 'myclass')
myobject = c()

但是要注意:如果myclass并不在mymodule的自動導出列表中(__all__),則必須顯式地導入,例如:
m = __import__('mymodule', globals(), locals(), ['myclass'])
c = getattr(m, 'myclass')
myobject = c()

若要封裝的規(guī)范一些,可以這樣來做:
Code
代碼如下:
class Activator:
'''本類用來動態(tài)創(chuàng)建類的實例'''
@staticmethod
def createInstance(class_name, *args, **kwargs):
'''動態(tài)創(chuàng)建類的實例。
[Parameter]
class_name - 類的全名(包括模塊名)
*args - 類構(gòu)造器所需要的參數(shù)(list)
*kwargs - 類構(gòu)造器所需要的參數(shù)(dict)
[Return]
動態(tài)創(chuàng)建的類的實例
[Example]
class_name = 'knightmade.logging.Logger'
logger = Activator.createInstance(class_name, 'logname')
'''
(module_name, class_name) = class_name.rsplit('.', 1)
module_meta = __import__(module_name, globals(), locals(), [class_name])
class_meta = getattr(module_meta, class_name)
object = class_meta(*args, **kwargs)
return object
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 安阳市| 永福县| 五寨县| 南川市| 万年县| 施秉县| 林周县| 福贡县| 吴川市| 中宁县| 河南省| 乐都县| 利川市| 阳江市| 额济纳旗| 新源县| 浪卡子县| 延安市| 九寨沟县| 宜良县| 罗山县| 汕尾市| 斗六市| 海原县| 牡丹江市| 天镇县| 普安县| 罗城| 城步| 松桃| 文水县| 建平县| 常熟市| 涟源市| 连平县| 黔西| 平度市| 尖扎县| 沙田区| 通州市| 东方市|