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

问题描述 投票:0回答:3

在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
3个回答
15
投票

使用

setattr

setattr(A, 'foo', 10)

6
投票

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

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

0
投票

仅供参考 - 您可以使用

vars()
:

从整个对象的成员生成字典
class A:
    pass
A.foo = 10
A.bar = 'hello'

a = A()
b = vars(a)
print(b['bar'])  # prints hello
© www.soinside.com 2019 - 2024. All rights reserved.