【问题标题】:Dynamically add class member using string to name it使用字符串动态添加类成员来命名它
【发布时间】:2012-12-12 06:54:19
【问题描述】:
在 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
【问题讨论】:
标签:
python
class
dynamic
member
【解决方案1】:
使用setattr:
setattr(A, 'foo', 10)
【解决方案2】:
是的!这可以通过getattr 和setattr 的组合来完成。
setattr(A, 'foo', 10)
getattr(A, 'foo') // Returns 10
【解决方案3】:
仅供参考 - 您可以使用 vars() 从整个对象的成员生成字典:
class A:
pass
A.foo = 10
A.bar = 'hello'
a = A()
b = vars(a)
print(b['bar']) # prints hello