Python 是否有办法实现类似 C# 的索引器

本文关键字:索引 实现 是否 Python | 更新日期: 2023-09-27 18:32:25

如何在Python C#索引器中实现 - 像这样[int i] {get set}?换句话说,如何用python编写以下代码?

public class foo{
    ...
    List<foo2> objfoo;
    ...
    public foo2 this[int i] {
      get{ return objfoo[i]; }}
}//end class foo
//in another class or method...
ofoo = new foo();
...
foo2 X = ofoo[3];

Python 是否有办法实现类似 C# 的索引器

如果要使类的工作方式类似于 Python 列表(类似于其他语言中的数组),则可以子类列表并为类提供自定义方法和属性,而无需重写任何列表方法或属性,除非需要。

尝试模仿您发布的一些内容:

class foo(list):
    def __init__(self, *args):
        self.extend(args)
        self.x = "Now"
    def smack(self):
        print("Smackity!")
ofoo = foo(1, 2, 3, 4, 5, 6)
print(ofoo[3])  # Prints 4
print(ofoo.x)   # Prints "Now"
ofoo.smack()    # Prints "Smackity!"

可以使用普通列表方法以所需的任何方式添加或更改索引项。

此外,如果有帮助,这里有更多关于列表的信息。