国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 明星| 陵水| 海伦市| 神木县| 田东县| 平果县| 瑞金市| 金门县| 疏勒县| 田阳县| 县级市| 同江市| 海阳市| 富宁县| 渭源县| 东乡族自治县| 怀来县| 孟州市| 中卫市| 乐昌市| 夹江县| 东平县| 峨山| 濉溪县| 英吉沙县| 延安市| 乐亭县| 甘南县| 永修县| 怀化市| 靖西县| 会同县| 鞍山市| 静安区| 枣强县| 宿州市| 双流县| 阿克苏市| 彭泽县| 峨眉山市| 汪清县|