python - 如何在Python中委托(delegate) `__iter__`方法

标签 python python-3.x metaprogramming

我想为可迭代容器委托(delegate) __iter__ 方法。

class DelegateIterator:
    def __init__(self, container):
        attribute = "__iter__"
        method = getattr(container, attribute)
        setattr(self, attribute, method)

d = DelegateIterator([1,2,3])
for i in d.__iter__(): # this is successful
    print(i)
for i in d: # raise error
    print(i)

输出为

1
2
3
Traceback (most recent call last):
  File "test.py", line 10, in <module>
    for i in d:
TypeError: 'DelegateIterator' object is not iterable

请告诉我如何委托(delegate) __iter__ 方法。

最佳答案

为什么让事情变得过于复杂?

class DelegateIterator:
    def __init__(self, container):
        self.container = container

    def __iter__(self):
        return iter(self.container)

关于python - 如何在Python中委托(delegate) `__iter__`方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66417196/

相关文章:

python - 如何使用 Windows 10 打开 Anaconda Navigator

Scala 编译时递归?

c++ - 如何确定编译器对元程序做了什么? (对于 boost.proto)

python - 如何读取这个 JSON 文件?

python-3.x - 如何按年对多个数据框列进行分组?

python - 我使用 pygame.rect.move 有问题吗?

python - 远程队列消费者在重启后错过了第一条消息

ruby - 删除/取消定义另一个模块包含的类方法

python - 使用 python 和 gmail 在同一个线程中发送多封电子邮件

python - 如何在 Pandas 中创建一个 mm-yyyy 列?