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