Python 按名称获取变量
如何使用变量作为“键”,从“self”语法中获取保存的值 一些代码:Python 按名称获取变量,python,class,Python,Class,如何使用变量作为“键”,从“self”语法中获取保存的值 一些代码: class Foo: def __init__(self, n1, n2, n3, ...): self.node_1 = n1 self.node_2 = n2 self.node_3 = n3 ... def get_node(n): return self."node_"+n # This is wrong. What s
class Foo:
def __init__(self, n1, n2, n3, ...):
self.node_1 = n1
self.node_2 = n2
self.node_3 = n3
...
def get_node(n):
return self."node_"+n # This is wrong. What should I use?
n=2
,我需要值self.node_2
。因此n=3
是self.node\u3
,等等string
传递给access时,您将获得相应属性的值。下面是示例代码:
class MyClass:
def __init__(self, n1, n2):
self.node_1 = n1
self.node_2 = n2
def get_node(self, n):
return getattr(self, n)
x = MyClass('value_1', 'value_2')
print x.get_node('node_1')
# Output: 'value_1'
但是,您还应该更新\uuu init\uu()
方法以使用**args
,正如您提到的,您有大量的属性列表。与一起使用可动态设置属性。下面是一个例子:
>>> class MyClass:
... def __init__(self, *args):
... for i, item in enumerate(args):
... setattr(self, 'node_{}'.format(i+1), item)
... def get_node(self, n):
... return getattr(self, n)
...
>>> x = MyClass(1, 2, 3, 4)
>>> x.get_node('node_1')
1
>>> x = MyClass('a')
>>> x.get_node('node_1')
'a'
为什么不创建一个
self.nodes
列表呢?虽然您可以通过存储在字符串中的名称访问属性,但节点列表将更有意义。临时解决方案<代码>获取属性函数。“我需要一个动态变量名”的正确解决方案是使用dict(如果名称必须是任意的)或列表(如果需要var1、var2、…varN)。