[英]Python Class dynamic attribute access
我想通過帶有名稱的字符串訪問類屬性。
就像是:
class a: b=[] c='b' eval('a.'+c+'=1')
但這在Python中不起作用。 我怎樣才能做到這一點?
使用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'
但是,我非常懷疑,有更好的方法可以實現您的目標。 您是否嘗試過使用字典而不是課堂?
eval用於評估,請使用exec '執行'語句:
eval
exec
exec('a.'+c+'=1')
但是,請考慮同時使用兩者的風險。 您可以查看此答案以了解表達式和語句之間的區別。
由於您setattr名稱設置屬性,因此在Hop的答案中解釋的setattr是更好的做法,並且比使用exec更安全。
[英]Python 3 dynamic class attribute
[英]Dynamic Class Attribute in Python?
[英]Python: access class attribute by variable
[英]Access a class attribute inside a python class decorator
[英]Python class inheritance: dynamic attribute creation
[英]how to add dynamic variables as attribute of a class in PYTHON
[英]Adding dynamic attribute to python class fails
[英]How to access a specific class instance by attribute in python?
[英]Python custom initialization on first class attribute access
[英]access attribute from another class in python
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.