如何使用变量'key'从'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 should I use?
Run Code Online (Sandbox Code Playgroud)
我不能做一个switch语句,因为我有21个值......
只是为了让它更加清晰,如果n = 2,我想要价值self.node_2.所以n = 3IS self.node_3等
你可以用getattr(class_obj, 'property').在传递类的对象和要访问的属性时string,您将获得相应属性的值.以下是示例代码:
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'
Run Code Online (Sandbox Code Playgroud)
但是__init__(),**args如您所述,您还应该更新您的方法以使用大量属性.使用setattr(class_obj, 'property', value)连同enumerate()动态设置属性.以下是该示例:
>>> 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'
Run Code Online (Sandbox Code Playgroud)