如何在Python3中迭代类中的自身属性?

时间:2017-05-30 06:05:14

标签: python python-3.x

我想在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

2 个答案:

答案 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