iterate over an instance object's attributes in Python
我有一节课
1 2 3 4 5 6 7 | class MyClass(): def __init__(self): self.a = 7 self.b = 2 @property def aAndB(self): return self.a + self.b |
我想要一个函数,它遍历所有属性,只返回具有特定属性的类实例。
我的目标是这样一个函数:
1 2 | def findInstances(listOfInstances, instanceVariable, instanceValue): #return all instances in listOfInstances where instanceVariable==instanceValue |
使用
当前,像这样调用函数
1 | findInstances(someListOfInstances, 'aAndB', '23') |
使python抱怨
也许你们都是对的,答案就在那里,但我还是不明白。上述问题中的所有答案都会得到列表,而不是字典。我想要所有的属性(包括使用
我需要类似的东西
1 2 | for a in dir(myClass): print a, myClass.(a) # get the value for an attribute stored in a variable |
更清楚地说:以下是我想要的,但可能有更好的方法,我不知道。
1 2 | for a in dir(myClass): print a, eval("myClass.{}".format(a)) |
实际上,有一种非常简单的方法可以做到这一点,用
1 2 3 4 | myClass = MyClass() for a in dir(myClass): if(a[:2] !="__"): #don't print double underscore methods print a, getattr(myClass, a) |
输出:
1 2 3 | a 7 aAndB 9 b 2 |
这有一个很大的优点,即不需要以实例的名义将代码硬编码到字符串中,这是使用