前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 类特殊方法__getitem__

Python 类特殊方法__getitem__

作者头像
狼啸风云
修改2022-09-02 20:57:00
2.4K0
修改2022-09-02 20:57:00
举报

凡是在类中定义了这个__getitem__ 方法,那么它的实例对象(假定为p),可以像这样

p[key] 取值,当实例对象做p[key] 运算时,会调用类中的方法__getitem__。

一般如果想使用索引访问元素时,就可以在类中定义这个方法(__getitem__(self, key) )。

先用一个夸张一点的例子来说明这个问题。

当实例对象通过[] 运算符取值时,会调用它的方法__getitem__,从上面代码中输出二个笑脸可以看出来。

一般这样用

代码语言:javascript
复制
'''
   黄哥Python 联系方式,自己搜
'''


class DataBase:
    '''Python 3 中的类'''

    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 self.__dict__.get(key, "100")
        return self.d.get(key, "default")
       

data = DataBase(1, "192.168.2.11")
print(data["hi"])
print(data[data.id])

或者

代码语言:javascript
复制
'''
   黄哥Python 联系方式,自己搜
'''


class DataBase:
    '''Python 3 中的类'''

    def __init__(self, id, address):
        '''初始化方法'''
        self.id = id
        self.address = address

    def __getitem__(self, key):
        return self.__dict__.get(key, "100")


data = DataBase(1, "192.168.2.11")
print(data["hi"])
print(data["id"])

还可以用在对象的迭代上

代码语言:javascript
复制
'''
   黄哥Python 联系方式,自己搜
'''


class STgetitem:

    def __init__(self, text):
        self.text = text

    def __getitem__(self, index):
        result = self.text[index].upper()
        return result


p = STgetitem("黄哥Python")
print(p[0])
print("------------------------")
for char in p:
    print(char)
    
    
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档