Python类动态属性访问

标签 python dynamic attributes eval

我想通过带有名称的字符串访问类属性。

类似于:

class a:
    b=[]

c='b'
eval('a.'+c+'=1')

但这在 Python 中不起作用。 我该怎么做?

最佳答案

使用setattr :

In [1]: class a:
   ...:     b = []
   ...:     

In [2]: setattr(a, 'b', 1)

In [3]: a.b
Out[3]: 1

使用getattr反过来:

In [4]: getattr(a, 'b')
Out[4]: 1

In [5]: getattr(a, 'x', 'default')
Out[5]: 'default'

不过,我非常怀疑是否有更好的方法可以实现您的目标。您是否尝试过使用字典而不是类?

关于Python类动态属性访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34831505/

相关文章:

java - java中是否可以从对象中删除属性(变量)?

asp.net-mvc - 用于 asp.net mvc 的回形针

ios - 动态大小的 collectionView 单元导致可见性问题 - iOS

python - 允许使用 token `class` 作为方法签名中的命名参数

python - 当我按下另一个 QWidget 中的按钮时,我想在 QPixmap 中设置 path_to_photo

python - setuptools、easy_install 和自定义 pypi 服务器

c - 动态数组分配困惑

objective-c - Objective C 运行时如何查找已定义的消息?

c# - 如何将属性应用于继承树中的单个类型?

python - 编写等效的 GNU/Linux 命令