关于python3的变量名的问题

现有a = ['rect','line','rect']这个列表,有一个类,假设名字为Test,先不管实例化类的时候需要传入什么参数,要求输出一个列表b = [rect1,line,rect2],b中的这三个都是已经实例化的Test类的对象,也就是通过a列表(必须通过a列表,不能直接输入对象名!)进行了以下过程:rect1 = Test(),line = Test(),rect2 = Test(),这个过程中如何用python3代码实现?重点是如何把'rect'转化成rect1这样可以作为对象名的东西。
感谢赐教,答得好可以追加悬赏。

使用compile和exec方法,可以达到你的要求,代码参考如下

class Test(object):
    def __init__(self, name):
        self.name = name
    def print(self):
        print("I am " + self.name)
a = ['rect','line','triangle']
#create object with name
for name in a:
    code = '%s = Test("%s")' % (name, name)
    exec(compile(code, '', 'exec'))
#call each print method
for name in a:
    code = '%s.print()' % name
    exec(compile(code, '', 'exec'))

温馨提示:答案为网友推荐,仅供参考
相似回答