在python的类中定义了特殊方法__getitem__,那么这个类在创建实例时,可以通过下标来取值
当从对象的下标取值时,会调用类中的方法__getitem__
下面我们来上一个例子
class TestFunc: def __init__(self, ip, port): self.ip = ip self.port = port self.addr = { "ip": self.ip, "port": self.port } def __getitem__(self, key): # return self.__dict__.get(key, "ip") return self.addr.get(key) addr = TestFunc("192.168.1.1", "80") print(addr["ip"]) print(addr.ip) print(addr.port)
打印返回
192.168.1.1 192.168.1.1 80
当实例对象通过[] 运算符取值时,会调用它的方法__getitem__,从上面代码中输出192.168.1.1
如果在这个例子当中我们注释掉__getitem__方法那么print(addr["port"])这段代码将会报错
我们在使用__getitem__这个特殊方式时,一般__getitem__方法返回使用self.addr.get(key)