python中的魔法方法

1.getitem
getitem(self,key):返回键对应的值,可以让对象实现迭代功能。
类中定义了这个__getitem__ 方法,那么它的实例对象(假定为p),可以像这样p[key] 取值【使用索引访问元素】,当实例对象做p[key] 运算时,会自动调用类中的方法__getitem__。
在使用中,我们可以通过索引触发,也可以通过for…in… 迭代对象时触发。

class Animals(object):
    def __init__(self,animal_list):
        self.animal_list = animal_list
        
    def __getitem__(self,item):
        
        return self.animal_list[item]
    
list = ["dog","cat","pig","kitti"]
animal = Animals(list) 
#case 1
print(animal[2])   #pig
#case 2
for item in animal:
    print(item)
	dog
	cat
	pig
	kitti

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

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值