请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

__getitem__与可迭代类型

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__方法才是可迭代对象

0 回复 有任何疑惑可以回复我~
  • 提问者 Pythonist #1
    明白了,谢谢老师。
    回复 有任何疑惑可以回复我~ 2019-01-18 14:06:15
  • bobby 回复 提问者 Pythonist #2
    好的,
    回复 有任何疑惑可以回复我~ 2019-01-20 11:14:08
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号