为对象建立索引后,将__getitem__
首先在该对象的类中查找特殊方法。类本身是一个对象,而一个类的类通常是type
。因此,要覆盖__getitem__
某个类,您可以重新定义其元类(使其成为的子类type
):
class MetaA(type):
def __getitem__(cls,val):
return "It works"
class A(object):
__Metaclass__=MetaA
pass
print(A[0])
# It works
class A(object, Metaclass=MetaA):
pass