可以通过添加 iter() 调用来修复代码:
class test(object): def __init__(self): pass def __iter__(self): return iter("my string")
这是一个示例运行:
>>> o = test()>>> iter(o)<iterator object at 0x106bfa490>>>> list(o)['m', 'y', ' ', 's', 't', 'r', 'i', 'n', 'g']
原始错误的原因是 iter 的API声称要返回实际的迭代器。在 国际热核实验堆() 函数检查,以确保履行合同。
注意,这种错误检查也发生在其他地方。例如, len() 函数检查以确保 len () 方法返回整数:
>>> class A: def __len__(self): return 'hello'>>> len(A())Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> len(A())TypeError: 'str' object cannot be interpreted as an integer
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)