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 - 在Python中用较小的矩阵生成更大的矩阵

c++ - 如何为具有特定类型特征的所有类型编写函数模板?

C++ SFINAE 示例?

python - zip(list) 和 zip(*list) 的区别

java - 为什么不能在 Java 中引用元字段或方法?

Python SQLAlchemy - 模拟模型属性的 "desc"方法

python - 试图找到类(class)内的号码

OCaml:如何以 pythonic 方式构造格式化字符串?

python - 如何同时使用 Anaconda 版本(2.7 和 3.5)?

python - 用于替换列表中特殊模式的 RegEx