1
我有一个类fib
下面给出。它实现__iter__
和__next__
。它是一个迭代器以及它自己的迭代器。检查一个类是否可迭代
class fib(object):
def __init__(self):
self.prev = 0
self.curr = 1
def __iter__(self):
return self
def __next__(self):
value = self.curr
self.curr += self.prev
self.prev = value
return value
from collections import Iterable
print(isinstance(fib, Iterable))
print语句返回False
,我希望它返回True
'fib'是* class *,不是实例。所以你可以使用子类检查'issubclass(fib,Iterable)'。或者你首先创建一个实例:'isinstance(fib(),Iterable)' - 这就是你用小写字符开始你的类名得到的结果;) – poke
'fib'是不可迭代的。 'fib'是一个实例可迭代的类。尝试迭代“fib”本身就像尝试吃汉堡的概念。 – user2357112