如果在类中定义了__getitem__()方法,那么他的实例对象(假设为P)就可以这样P[key]取值。
当实例对象做P[key]运算时,就会调用类中的__getitem__()方法。
A类的实例A()可以通过点的方式获取到属性
# 作者-上海悠悠 QQ交流群:717225969 # blog地址 https://www.cnblogs.com/yoyoketang/ class A(object): count = 0 def __init__(self): self.name = "yoyo" self.age = 18 def start(self): print("start1111111") a = A() print(a.count) print(a.name)
如果我们想实现a['name']这种方式取值,在类中定义__getitem__()
方法就可以实现
# 作者-上海悠悠 QQ交流群:717225969 # blog地址 https://www.cnblogs.com/yoyoketang/ class A(object): count = 0 def __init__(self): self.name = "yoyo" self.age = 18 def start(self): print("start1111111") def __getitem__(self, item): return object.__getattribute__(self, item) a = A() print(a.count) print(a.name) # 通过[key]语法调用属性 print(a['count']) print(a['age']) print(a['start']) print(a['start']())
运行结果
0 yoyo 0 18 <bound method A.start of <__main__.A object at 0x0000027CC08D96D8>> start1111111 None