我想在Python3中迭代自我功能的自我属性,但我没有发现任何类似的东西。我在班级here之外找到了如何做到这一点。
我的问题是,有可能吗?
class Foo:
def __init__(self, attr1, attr2):
self.attr1 = attr1
self.attr2 = attr2
def method1(self):
#Return sum of the values of the self attributes
pass
答案 0 :(得分:4)
您可以通过__dict__
成员访问所有属性:
class Foo:
def __init__(self, attr1, attr2):
self.attr1 = attr1
self.attr2 = attr2
def method1(self):
return sum(self.__dict__.values())
您也可以使用vars(感谢Azat Ibrakov和S.M.Styvane指出这一点):
def method1(self):
return sum(vars(self).values())
Here对__dict__
与vars()
的讨论很好。
答案 1 :(得分:2)
我不喜欢将__dict__
用于简单的事情。您应该使用vars
返回实例属性的字典
>>> class Foo(object):
... def __init__(self, attr1, attr2):
... self.attr1 = attr1
... self.attr2 = attr2
... def method1(self):
... return sum(vars(self).values())
...
>>> Foo(2, 4).method1()
6