我需要更改什么才能使其正常工作?
class A:
@staticmethod
def __getitem__(val):
return "It works"
print A[0]
请注意,我正在调用 A
类型的 __getitem__
方法。
最佳答案
当一个对象被索引时,特殊方法 __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
在 Python3 中,元类是这样指定的:
class A(object, metaclass=MetaA):
pass
关于python - 如何编写静态 python getitem 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6187932/