相同类名比较多,想用python 循环创建类名,并创建对象使用,遇到一个问题

发布于 2022-09-27 18:40:21

要创建 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__)
关注者
0
被浏览
380
0 个回答
暂无答案,快来添加答案吧
推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看