6

在 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
4

3 回答 3

14

使用setattr

setattr(A, 'foo', 10)
于 2012-12-26T19:32:41.043 回答
5

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

setattr(A, 'foo', 10)
getattr(A, 'foo') // Returns 10
于 2012-12-26T19:36:05.753 回答
0

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

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

a = A()
b = vars(a)
print(b['bar'])  # prints hello
于 2021-03-26T20:45:33.570 回答