在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)
是的!这可以通过getattr和setattr的组合来完成。
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