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

__len__(self):

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

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

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

 class Students(object):
     def __init__(self, *args):
         self.names = args
     def __len__(self):
         return len(self.names)

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

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

__getitem__():

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

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class DataTest:
    def __init__(self,id,address):
        self.id=id
        self.address=address
        self.d={self.id:1,
                self.address:"192.168.1.1"
                }

    def __getitem__(self,key):
        return "hello"


data=DataTest(1,"192.168.2.11")
print data[2]

输出结果为

hello

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

你可能感兴趣的:(编程语言,python)