我在构造一个自定义迭代器 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 ???
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.