【发布时间】:2017-04-05 08:24:51
【问题描述】:
我有一个类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))
打印语句返回False,我希望它返回True
【问题讨论】:
-
fib是 类,而不是实例。所以你会使用子类检查issubclass(fib, Iterable)。或者你先创建一个实例:isinstance(fib(), Iterable)——这就是你用小写字符开始你的类名的结果;) -
fib不可迭代。fib是一个实例可迭代的类。尝试迭代fib本身就像尝试吃汉堡的概念。
标签: python class python-3.x iterable