python __getitem__()和__len__()方法理解(repost from https://blog.csdn.net/chituozha5528/article/details/7...

Python中的两个特殊函数__len__(self)和__getitem__()

 

__len__(self):

如果一个类表现得像一个list,要获取有多少个元素,就得使用len()函数。

要让len()函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。

例如,我们写一个 Students 类,把名字传进去:

1 class Students(object):
2     def __init__(self, *args):
3         self.names = args
4     def __len__(self):
5         return len(self.names)

只要正确实现了__len__()方法,就可以用len()函数返回Students实例的“长度”:

1 >>>ss = Students('Bob','Alice','Tim')
2 >>>print len(ss)
3 3

 

__getitem__():

如果在类中定义了__getitem__()方法,那么他的实例对象(假设为P)就可以这样P[key]取值。当实例对象做P[key]运算时,就会调用类中的__getitem__()方法。

 1 # -*- coding:utf-8 -*-
 2 class DataTest:
 3     def __init__(self,id,address):
 4         self.id=id
 5         self.address=address
 6         self.d={self.id:1,
 7                 self.address:"192.168.1.1"
 8                 }
 9         
10     def __getitem__(self,key):
11         return "hello"
12     
13  
14 data=DataTest(1,"192.168.2.11")
15 print data[2]

输出结果为

hello

实例对象的key不管是否存在都会调用类中的__getitem__()方法。而且返回值就是__getitem__()方法中规定的return值。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值