我正在尝试实例化一个类对象,该对象的所需名称保存在其他地方创建的变量中。
我无法弄清楚如何使类的实例具有变量所拥有的名称。
示例:
class foo:
def __init__(self):
self.var1 = "bar"
if __name__ == "__main__":
test = "a" # returned by another func.
[string held by variable 'test'] = foo()
print a.var1
这可能吗? (甚至可取的......)
答案 0 :(得分:2)
这是不可取的,因为如果在运行时之前不知道它的名字,就很难使用变量a
进行编程。
您可能会考虑使用dict:
data = {}
test = func() # "a"
data[test] = foo()
答案 1 :(得分:0)
一个函数可能更好 - 这就是你需要做的工作是封装的,可以重复使用:
def do_work(an_instance_of_foo):
print an_instance_of_foo.var1
class foo:
def __init__(self):
self.var1 = "bar"
if __name__ == "__main__":
do_work(foo())
如果您还需要这个单词,可以将其传递给函数:
def do_work(an_instance_of_foo, my_word):
# etc.
或者,如果您需要将foo
的实例与特定名称相关联,则可以使用字典作为命名空间(如@unutbu所建议的那样)。