Python如何根据类名实例化类
程序员文章站
2022-03-07 23:47:37
个人认为比较好的一种方法:# 假设当前目录中有个名为losses.py的模块,我们要调用其中的名为HingeGanLoss的类file_name = 'losses'class_name = 'HingeGanLoss'modules = __import__(file_name)ganloss = getattr(modules, class_name)()input = []for i in range(4): input.append(torch.ones((16, 1,...
个人认为比较好的一种方法:
# 假设当前目录中有个名为losses.py的模块,我们要调用其中的名为HingeGanLoss的类
file_name = 'losses'
class_name = 'HingeGanLoss'
modules = __import__(file_name)
ganloss = getattr(modules, class_name)()
input = []
for i in range(4):
input.append(torch.ones((16, 1, 1, 1)) * 0.5)
re = ganloss(input, target_is_real=True)
print(re)
其中 __import__() 和 getattr() 都是python内置函数。
1. __import__()
__import__() 函数用于动态加载类和函数 。如果一个模块经常变化就可以使用 __import__() 来动态载入。
语法:
__import__(name[, globals[, locals[, fromlist[, level]]]]) # name为模块名
2. getattr()
getattr() 函数用于返回一个对象属性值。
语法:
getattr(object, name[, default])
# object -- 对象。
# name -- 字符串,对象属性。
# default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。
本文地址:https://blog.csdn.net/chongchong247619000/article/details/109863371