我在构造一个自定义迭代器 Test 类的时候发现一个奇特的现象,Test 类并没有继承自 Iterable,只是实现了__iter__和__next__函数。
然而创建的对象却可以判定是 Iterable 类型
class TestIterator():
def __init__(self, n):
...
def __iter__(self):
return self
def __next__(self):
...
t1 = Test()
isinstance(t1, Iterable) #返回 True !!!
然后我又创建了一组普通的类测试,发现又不行了:
class A:
def do1(self):
print('A do1')
class B(A):
def do2(self):
print('B do2')
class X:
def do1(self):
print('X do1')
a1 = A()
b1 = B()
x1 = X()
isinstance(b1, A) #True
isinstance(x1, A) #False ???