python __getitem__ 魔法方法

Python的魔法方法__getitem__ 可以让对象实现迭代功能,这样就可以使用for...in... 来迭代该对象。

在用 for..in.. 迭代对象时,如果对象没有实现 __iter__ __next__ 迭代器协议,Python的解释器就会去寻找__getitem__ 来迭代对象,如果连__getitem__ 都没有定义,解释器就会报对象不是迭代器的错误:

class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list

company = Company(["tom", "bob", "jane"])
for em in company:
    print(em)
TypeError: 'Company' object is not 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"])
for em in company:
    print(em)

转载于:https://my.oschina.net/u/4153263/blog/3067878

你可能感兴趣的:(python __getitem__ 魔法方法)