我希望通过具有名称的字符串访问类属性。
类似于:
class a: b=[] c='b' eval('a.'+c+'=1')
但这在Python中行不通。我该怎么做?
发布于 2016-01-16 20:10:34
使用setattr
setattr
In [1]: class a: ...: b = [] ...: In [2]: setattr(a, 'b', 1) In [3]: a.b Out[3]: 1
相反,请使用getattr:
getattr
In [4]: getattr(a, 'b') Out[4]: 1 In [5]: getattr(a, 'x', 'default') Out[5]: 'default'
不过,我非常怀疑,无论你的目标是什么,都有更好的方法来实现。你试过用字典代替类吗?
发布于 2016-01-16 20:04:42
eval用于计算,使用exec 'execute‘语句:
eval
exec
exec('a.'+c+'=1')
然而,请考虑使用两者都有的风险。您可以查看这个答案,以了解表达式和语句之间的差异。
由于您希望通过名称设置属性,所以setattr在霍普的回答中解释了比使用exec更好、更安全的做法。
https://stackoverflow.com/questions/34831505
相似问题