【发布时间】:2022-01-04 23:07:26
【问题描述】:
使用代码:
class Values():
# class for storing values
value_1 = None
print(Values.value_1)
print(getattr(Values, 'value_1'))
我能够得到输出:
None
None
但是当尝试使用此代码时,它对其中任何一个都不起作用:
print(Values.__dict__.get(str(value_1)))
print(getattr(Values, str(value_1)))
print(Values.__dict__[str(value_1)])
我得到输出:
NameError: name 'value_1' is not defined
我正在尝试以这种方式访问该属性以用于未来的项目,而其他两种方式还不够。非常感谢任何帮助
【问题讨论】:
-
不太清楚你在问什么。错误告诉您名称未定义且正确。而是使用:
print(Values.__dict__.get('value_1')),它按预期工作。在str()中包装未定义的名称不会使其成为字符串。很难想象你可以写str(value_1)这样的代码却不能写'value_1'这样的情况。 -
除了引号之外,有什么方法可以使它成为字符串吗?如何传递与 value_1 同名的变量以获得输出 None?
-
您只需定义变量:
some_var = 'value_1'。然后你可以使用它Values.__dict__.get(some_var)。 -
如果我有一组值,即 value_1、value_2、value_3 等都是 Values() 的属性,那仍然是最好的方法吗?谢谢
-
如果您订购了
value_1、value_2等名称,听起来最好的方法是列表:values = ['a', 'b', 'c']然后您只需访问它们values[0], values[1]...等。
标签: python class dictionary attributes getattr