相同类名比较多,想用python 循环创建类名,并创建对象使用,遇到一个问题
要创建 3 个类分别是:P_a, P_b, P_c
3 个类有相同的方法名是:Na
3 个类对应的方法的内容是: tt = 1, tt = 2 ,tt = 3
对应的方法的值分别是:P_a.Na = 1 , P_b.Na = 2, P_c.Na = 3
cl = ['a','b','c']
lll = ['1','2','3']
num = len(lll)
class Base():
def Na(self):
tt = ''
return tt
for cls,i in zip(cl,range(num)):
#print(cls,i)
class TEMP(Base):
def Na(self): #因为是参考别人代码,觉得这里用到的是类的方法的重载
#print(cls,i)
tt = lll[i]
return tt
TEMP.__name__ = f'Pa_{cls}'
TEMP.__qualname__ = f'Pa_{cls}'
globals()['Pa_'+cls] = TEMP
f = Pa_a() #f = Pa_b(),f = Pa_c(),不论创建那个对象,f.Na ()的值是3
print (f.Na ()) #打印方法的值永远是 3,要求是P_a.Na = 1 , P_b.Na = 2, P_c.Na = 3
print(type(Pa_a()).name)
#下面代码可以打印出类名,说明创建成功了,只是去匹配方法值的时候存在一些逻辑关系。
print(type(Pa_a()).__name__)
print(type(Pa_b()).__name__)
print(type(Pa_c()).__name__)
推荐文章: