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