__getitem__(self,key):

        这个方法返回与指定键相关联的值。

        对序列来说(通常是列表),键应该是0~n-1的整数,其中n为序列的长度。

        对映射来说(通常是字典),键可以是任何类型。

class Tag:
    def __init__(self,id):
        self.id=id

    def __getitem__(self, item):
        print('这个方法被调用')
        return self.id

a=Tag('This is id')
print(a.id)
print(a['python'])

输出:

This is id
这个方法被调用
This is id

        第一次输出是因为print打印了a.id,第二次输出是a['python]这一句调用了__getitem__,第三次输出是因为print打印了return的self.id。

        由此可见,__getitem__可以通过类似字典的映射获取来触发,也就是xx['']这种形式。

        所以实现了__getitem__这个方法后,我们可以把类当做字典,那么干脆在类中的__init__初始化中建立一个字典对象好了(当然也可以是变量,通过if判断后再return返回)。

class Tag:
    def __init__(self):
        self.change={'python':'This is python'}

    def __getitem__(self, item):
        print('这个方法被调用')
        return self.change[item]

a=Tag()
print(a['python'])
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐