首页 > 解决方案 > 是否有一种“魔术方法”可以通过 instance[0] 而不是 instance.list[0] 访问在类中定义的列表?

问题描述

如果我有代码:

names = ["Dave", "John", "Bob"]

我想从我会做的名字中得到戴夫:

names[0]

如果我现在有代码

class Friends:
    def __init__(self, *people):
        self.names = []
        for v in people:
            self.names.append(v)

names = Friends("Dave", "John", "Bob")

现在要得到戴夫,我必须这样做:

names.names[0]

是否有一种神奇的方法或类似的方法,以便我可以做到:

names[0]

再次得到戴夫?

标签: pythonpython-3.xoop

解决方案


是的,它被__getitem__称为:

class MyClass:
    def __init__(self):
        self.names = ["john", "arthur"]

    def __getitem__(self, i):
        return self.names[i]

print(MyClass()[0])
# john

推荐阅读