python __getitem__()和__len__()方法理解(repost from https://blog.csdn.net/chituozha5528/article/details/78354833 and https://www.cnblogs.com/superxuezhazha/p/5792199.html)

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值。

 

posted @ 2019-09-17 22:50  思念殇千寻  阅读(428)  评论(0编辑  收藏  举报