gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:12 24 4
gpt4 key购买 nike

在 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 所在的任何地方的实例可用。

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

关于python - 使用变量值创建类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11777925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com