__getitem__的理解以及实现

在torch中遇到getitem(self,key):

把类中的属性定义为序列,可以使用getitem()函数输出序列属性中的某个元素,这个方法返回与指定键想关联的值。对序列来说,键应该是0~n-1的整数,其中n为序列的长度。对映射来说,键可以是任何类型。

如果在类中定义了getitem()方法,那么它的实例对象(假设为P)就可以以P[key]形式取值,当实例对象做P[key]运算时,就会调用类中的getitem()方法。当对类的属性进行下标的操作时,首先会被getitem() 拦截,从而执行在getitem()方法中设定的操作,如赋值,修改内容,删除内容等。

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

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


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

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

你可能感兴趣的:(__getitem__的理解以及实现)