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