python - 如何编写静态 python getitem 方法?

标签 python static operator-keyword magic-methods

我需要更改什么才能使其正常工作?

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/

相关文章:

python - Django 表单显示元

python - 函数中的默认值

python - 将 Pandas 中的日期时间分组为三个小时间隔

python - 如何将以前的打印覆盖到标准输出?

java - 当我们创建多个对象时,静态 block 会发生什么?

c - 在 C 中,为什么包含逗号(,)运算符的表达式(语句)的工作方式不同

c++ - 如何在没有条件的情况下更新直方图?

objective-c - Objective C/C静态方法性能

c - 指向 volatile 字符的 volatile 指针。额外的静态关键字

c++ - 如何在派生类中调用基类的<<运算符