迭代Python中的未知对象属性

时间:2014-07-21 17:35:49

标签: python iterator

我下面有一节课。但是,属性名称仍然未知。在这种情况下,如何制作一个类迭代器?基本示例指向__iter__next(),了解类的属性,pydocs中的示例。

class Foo(object):
    def __init__(self, dictionary):
        for k, v in dictionary.iteritems():
            setattr(self, k, v)

我想迭代每个对象属性:

bar = Foo(dict)
for i in bar:
    bar[i]

2 个答案:

答案 0 :(得分:3)

由于@TheSoundDefense建议您可以使用vars()内置列出对象的所有属性。以下答案通过在您的案例中使用它的示例扩展了这个想法

<强>实施

class Foo(object):
    def __init__(self, dictionary):
        for k, v in dictionary.iteritems():
            setattr(self, k, v)
    def __iter__(self):
        return iter(vars(self))

<强>演示

foo = Foo({'X':1, 'Y':2, 'Z':3})
for elem in foo:
    print elem

<强>输出

Y
X
Z

答案 1 :(得分:1)

您可能需要vars()功能。这将返回任意对象的属性名称和值的字典。只需使用vars(obj_name)