1

我正在尝试实例化一个类对象,其所需的名称保存在其他地方创建的变量中。

我不知道如何使类的实例具有变量所持有的名称。

例子:

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

这可能吗?(甚至是可取的......)

4

2 回答 2

2

这是不可取的,因为a当您直到运行时才知道它的名称时,使用该变量进行编程会很困难。

您可能会考虑使用 dict 代替:

data = {}
test = func()   # "a"
data[test] = foo()
于 2012-11-06T03:01:41.303 回答
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 建议的那样) 。

于 2012-11-06T03:03:35.373 回答