實現了__iter__或__getitem__方法的對象python
class GeneratorSampleInClass: def __iter__(self): for item in [1, 2, 3]: yield item g = GeneratorSampleInClass() print(type(GeneratorSampleInClass.__iter__)) # <class 'function'> print(type(g.__iter__())) # <class 'generator'> print(dir(g.__iter__())) # [..., '__next__', ...] def generator_sample_in_function(): for item in [1, 2, 3]: yield item print(type(generator_sample_in_function)) # <class 'function'> print(type(generator_sample_in_function())) # <class 'generator'> print(dir(generator_sample_in_function)) # 沒有__next__方法 print(dir(generator_sample_in_function())) # [..., '__next__', ...] class IteratorSampleInClass: def __iter__(self): return self def __next__(self): for item in [1, 2, 3]: yield item from collections import Iterator i = IteratorSampleInClass() print(isinstance(i, Iterator)) # True