如何使用字符串访问 class 变量?
How to acces to a class variable with a string?
我有以下代码:
import Parameters
def ReadOptionFromParametersFile(self,variable_name):
if (hasattr(Parameters, str(variable_name))):
return Parameters.variable_name
else:
return 0
我想为不同的变量调用这个函数。如果变量是在 Parameter
文件上定义的,我想读取执行 Parameters.variable_name
的值。问题显然是该文件没有名为 variable_name
的变量。
我也试过:
Parameters.str(variable_name)
或
Parameters.eval(variable_name)
您可以使用 getattr
通过字符串名称访问属性:
return getattr(Parameters, variable_name)
事实上,您的整个方法可以重构为:
def ReadOptionFromParametersFile(self, variable_name):
return getattr(Parameters, variable_name, 0)
如果未找到属性,getattr
的第三个参数是 return 的可选默认值。
我有以下代码:
import Parameters
def ReadOptionFromParametersFile(self,variable_name):
if (hasattr(Parameters, str(variable_name))):
return Parameters.variable_name
else:
return 0
我想为不同的变量调用这个函数。如果变量是在 Parameter
文件上定义的,我想读取执行 Parameters.variable_name
的值。问题显然是该文件没有名为 variable_name
的变量。
我也试过:
Parameters.str(variable_name)
或
Parameters.eval(variable_name)
您可以使用 getattr
通过字符串名称访问属性:
return getattr(Parameters, variable_name)
事实上,您的整个方法可以重构为:
def ReadOptionFromParametersFile(self, variable_name):
return getattr(Parameters, variable_name, 0)
如果未找到属性,getattr
的第三个参数是 return 的可选默认值。