gpt4 book ai didi

python - 我如何动态引用Python中的变量

转载 作者:行者123 更新时间:2023-11-28 21:53:31 27 4
gpt4 key购买 nike

看我的简单类:

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']

上面的 init 方法创建了两个列表,我想动态地引用它们:

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

但是当我这样做时,python 会提示对 ("self.%s_attrs"% section) 的调用。

我读到有人使用 get_attr 动态查找模块...

getattr(sys.modules[__name__], "%s_attrs" % section)()

这可以用于字典吗?

最佳答案

我想你要找的是getattr() .像这样:

def check_section(self, section):
for attr in getattr(self, '%s_attrs' % section):
print attr

尽管在这种情况下,为了简单起见,您最好使用字典:

class Foo(object):

def __init__(self):
self.my_attrs = {
'frontend': ['name','ip_address','mode','port','max_conn'],
'backend': ['name','balance_method','balance_mode'],
}

def sanity_check_data(self):
self.check_section('frontend')
self.check_section('backend')

def check_section(self, section):
# maybe use self.my_attrs.get(section) and add some error handling?
my_attrs = self.my_attrs[section]
for attr in my_attrs:
print attr

关于python - 我如何动态引用Python中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26164568/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com