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

posted @   I'm_江河湖海  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示