__getitem__与可迭代类型
来源:4-1 鸭子类型和多态

Pythonist
2019-01-10
from collections import Iterable
class Company(object):
def __init__(self, employee_list):
self.employee = employee_list
def __getitem__(self, item):
return self.employee[item]
company = Company(['tom', 'bob', 'jane'])
print(isinstance(company, Iterable))
for item in company:
print(item)
老师,课程中说company实现了__getitem__魔法方法,是可迭代类型,也可用于for循环,但为什么使用isinstance(company,Iterable)结果是False呢?
写回答
1回答
-
课程中其实提到过,实现__getitem__能进行for循环是因为for循环最开始会调用__iter__方法找不到的话会去退一步调用__getitem__方法,所以严格的说可以进行循环是因为for循环的语法做了优化,但是并不代表就是Iterable类型,你可以看看Iterable类型的源码,里面要求实现了__iter__方法才是可迭代对象
022019-01-20
相似问题