使用字符串动态添加类成员来命名它

时间:2012-12-26 19:29:41

标签: python class dynamic member

在Python中,我非常清楚可以在定义后向类中添加成员。但是,有没有办法使用字符串的内容命名成员?

例如,我可以这样做:

class A:
    pass
A.foo = 10

a = A()
print a.foo

但有没有办法做到这一点:

name = "foo"
class A:
    pass
A.[some trick here(name)] = 10

a = A()
print a.foo

3 个答案:

答案 0 :(得分:11)

使用setattr

setattr(A, 'foo', 10)

答案 1 :(得分:5)

是的!这可以通过getattrsetattr的组合来完成。

setattr(A, 'foo', 10)
getattr(A, 'foo') // Returns 10

答案 2 :(得分:0)

仅供参考 - 您可以使用 vars() 从整个对象的成员生成字典:

class A:
    pass
A.foo = 10
A.bar = 'hello'

a = A()
b = vars(a)
print(b['bar'])  # prints hello