Skip to main content
 首页 » 编程设计

python之使用变量值创建类实例

2025年05月04日11kenshinobiy

在 Python 中有没有一种方法,我可以使用变量值来创建 Class 实例

class Test(object): 
    def __init__(self, object): 
        self.name = object 
        print "Created Object :",self.name 
 
a1 = Test('a1') 
print a1.name 
b2 = 'a2' 
b2 = Test(b2) 
print a2.name 

在此示例中,我希望类实例名称分别为“a1”和“a2”。我不能直接使用值“a2”,因为它是从其他进程计算出来的,但类实例名称必须与它匹配,以便可以访问它。

在上面的例子中,它给出了错误:

 Created Object : a1 
 a1 
 Created Object : a2 
 
 Traceback (most recent call last): 
 File "D:\a\h", line 12, in <module> 
 print a2.name 
 NameError: name 'a2' is not defined 

请您参考如下方法:

任何时候你想动态创建变量名,你都需要停下来告诉自己字典是更好的方法。如果您希望类实例在任何地方都可用(这也不是最好的主意),但您可以这样做:

class Test(object): 
    instance_dict={} 
    def __init__(self,name): 
        self.name=name 
        self.instance_dict[name] = self 

现在你可以使用这个类了:

a1 = Test("a1") 
print a1 is Test.instance_dict["a1"] #True 
b1 = Test("a2") 
print b1 is Test.instance_dict["a2"] #True 

换句话说,instance_dict 类属性保留了最近创建的具有特定名称的实例的句柄,因此您可以处理 Test 所在的任何地方的实例可用。

不过,我不推荐这种设计。这里的缺点与使用全局变量的缺点相同。它可能会变得难以维护,难以判断到底发生了什么,等等,仅仅是因为通过您的程序的数据流没有很好地排序。