我下面有一节课。但是,属性名称仍然未知。在这种情况下,如何制作一个类迭代器?基本示例指向__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]
答案 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)
。