Вот, мой простой класс:Как я могу динамически ссылаться на переменную в Python
import sys
class Foo(object):
def __init__(self):
self.frontend_attrs = ['name','ip_address','mode','port','max_conn']
self.backend_attrs = ['name','balance_method','balance_mode']
Метод инициализации выше создает два списка, и я хочу, чтобы ссылаться на них как динамически:
def sanity_check_data(self):
self.check_section('frontend')
self.check_section('backend')
def check_section(self, section):
# HERE IS THE DYNAMIC REFERENCE
for attr in ("self.%s_attrs" % section):
print attr
Но когда я это делаю, питон жалуется на вызов ("self.%s_attrs" % section)
.
Я читал о людях, использующих get_attr
, чтобы найти модули динамически ...
getattr(sys.modules[__name__], "%s_attrs" % section)()
Может ли это быть сделано для словарей.
Вы хотите 'GetAttr (сам, '{} _attrs' .format (section)) ' – dano
Вы не должны хранить данные в именах переменных вообще. Это просто просит неприятностей. Вы должны сохранить эти два словаря в другой структуре, возможно, даже в другом словаре. – TheSoundDefense
Спасибо @ TheSoundDefense за совет, я возьму его на борт! – stephenmurdoch