python 使用 __getitem__ 作为方法

Aus*_*son 5 python

是否可以在方法中使用getitem,即

Class MyClass:
    @property
    def function(self):
        def __getitem__():
            ...
Run Code Online (Sandbox Code Playgroud)

所以我可以做

A = MyClass()
A.function[5]
A.function[-1]
Run Code Online (Sandbox Code Playgroud)

eru*_*orm 4

在Python中,一切都是一流的对象,所以这个想法应该可行(语法已关闭),尽管我建议使用function其中的属性创建自己的类,然后在MyClass中使用它,除非你有很好的数据-隐藏不这样做的理由...

我想指出的是,我假设您想要function返回一个可订阅的东西,而不是一个可订阅的函数列表。这是一个不同的实现(不过也可以完成。)

例如,一个可下标的东西(你也可以只制作一个list):

# python

> class FooFunc(list):
>   pass
> class Foo:
>   foofunc = FooFunc()
> f = Foo()
> f.foofunc.append("bar")
> f.foofunc[0]
'bar'
Run Code Online (Sandbox Code Playgroud)