使用变量的值作为对象的名称

时间:2017-12-13 22:04:20

标签: python class

如何使用变量的值作为类中的对象?

e.g。我有一个名为' a'的课程,我希望能够分配一个变量的值' b'成为类a

中对象的名称
class a():
   __init__(self):

b = "foo"

我怎样才能这样做

b = a()

相同
foo = a()

2 个答案:

答案 0 :(得分:4)

这种做事的推荐方法是使用词典。像这样:

b = "foo"
myDictionnary = {}

myDictionnary[b] = a

print(myDictionnary["foo"])

答案 1 :(得分:1)

你所寻求的是一种不好的做法,但如果你必须......

这只能在全球范围内完成。您需要将新变量添加到globals()词典:

class a:
   pass

b = 'foo'

globals()[b] = a()

print foo
# <__main__.a instance at 0x10282d518>

这也适用于函数内部:

class a:
    pass

b = 'foo'

# Be careful with this. As I said, this updates the global scope
# So "foo" can actually be accessed out of the function.
# Furthermore, calling this function more than once will yield
# different results as globals()['foo'] keeps getting overriden
def some_method():
    globals()[b] = a()
    print foo
    # <__main__.a instance at 0x10282d5a8>

some_method()