【发布时间】:2021-03-01 05:43:50
【问题描述】:
我想将__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
请告诉我如何委托__iter__ 方法。
【问题讨论】:
-
__iter__现在在定义为实例变量 stackoverflow.com/questions/43346584/… 时可以工作
标签: python python-3.x metaprogramming