繁体   English   中英

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

[英]How to iterate on self attributes inside a class in Python3?

我想从Python3中的self函数迭代self属性,但是我没有找到任何类似的东西。 我发现如何做到这一点的类之外这里

我的问题是,可能吗?

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

您可以通过__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和SMStyvane指出了这一点):

    def method1(self):
        return sum(vars(self).values())

__dict__vars()的精彩讨论。

我不喜欢将__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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM