首页 > 解决方案 > Python3 | 课程 | 面向对象

问题描述

class Foo:
    """
    class to represent 2D arrays
    """
    def __init__(self, lst: list[list]) -> None:
        self.lst = lst

a_list = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 100]
]

如果我想访问10我的变量a_list. 我打字a_list[2][1]

我在这里想要做的是......

我创建了一个实例,即Foo(a_list)并将其保存在一个变量n中。所以,n = Foo(a_list)是我输入的。现在,如果我再次想访问10. 我当然可以通过n.lst[2][1]

我的问题是,无论如何我可以通过以下方式做同样的事情:n[2][1]

标签: arrayspython-3.xlistclassoop

解决方案


这可以使用__getitem__方法来完成。就像是

class Foo:
    """
    class to represent 2D arrays
    """
    def __init__(self, lst: list[list]) -> None:
        self.lst = lst

    def __getitem__(self, idx):
        return self.lst[idx]

对于您的示例,n[2]返回一个列表,n[2][1]索引到“正常”python 列表也是如此。


推荐阅读