Python:使类可迭代。
- 论坛
- Python:使类可迭代。
7 浏览
Python:使类可迭代。
我继承了一个项目,其中有许多大型类,仅由类对象(整数、字符串等)组成。我希望能够在不需要手动定义属性列表的情况下检查属性是否存在。
是否可能使用标准语法使python类本身可迭代?也就是说,我希望能够使用for attr in Foo:
(甚至if attr in Foo
)遍历类的所有属性,而不需要先创建类的实例。我认为可以通过定义__iter__
来实现这一点,但到目前为止,我还没有完全找到我想要的结果。
我通过添加以下__iter__
方法实现了一部分我想要的功能:
class Foo: bar = "bar" baz = 1 @staticmethod def __iter__(): return iter([attr for attr in dir(Foo) if attr[:2] != "__"])
然而,这还不能完全实现我想要的功能:
>>> for x in Foo: ... print(x) Traceback (most recent call last): File "", line 1, in TypeError: 'classobj' object is not iterable
尽管如此,下面的代码是可行的:
>>> for x in Foo.__iter__(): ... print(x) bar baz