python魔术方法__getitem__解析

代码示例1:

some_item = some_object[idx]

等价于

some_item = some_object.__getitem__(idx)

这个方法的参数idx就是你在[]之间给定的idx。这其实是对operator的一种overload。

代码示例2:

class Data:
    def __init__(self,id,address) -> None:
        self.id = id
        self.address = address
        self.d = {self.id:1,self.address:'1111.111.11.1'}
    
    def __getitem__(self,key):
        return ('called!')

data = Data(222,'ddd')
print (data[1])
print (data['aaa'])

called!
called!

要将类实例化后,将实例当成列表形式输入下标(我输入的是空字符),不管你输入什么,只要在类中有定义def _ _ getitem_ _(self,key):都会有默认的返回值。

代码示例3:

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)

P
##############################
P
Y
T
H
O
N

可以让对象实现迭代功能,这样就可以使用for…in… 来迭代该对象了

你可能感兴趣的:(人生苦短,我用Python,python)