在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
使用
setattr
setattr(A, 'foo', 10)
是的!这可以通过 getattr 和 setattr 的组合来完成。
setattr(A, 'foo', 10) getattr(A, 'foo') // Returns 10
仅供参考 - 您可以使用
vars()
class A: pass A.foo = 10 A.bar = 'hello' a = A() b = vars(a) print(b['bar']) # prints hello