重载类方法,以便能够根据python对象的属性对列表中的python对象进行索引

2024-04-27 03:42:29 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个名为foo的类,它的定义如下

class foo:
     def __init__(self, id):
         self.id = id

我希望这一切发生


dummylist = [foo(3), foo(4), foo(10)]

# I want to do that if possible

print(dummylist[10]) # and get the last object in the list

我想要的是,我有一个具有许多属性的类,我想要一个该类的对象列表,并且能够检索具有其属性值的特定对象

我知道我可以通过next或列表理解来实现这一点,但我想通过用[]索引对象列表来实现这一点


Tags: theto对象selfid列表属性定义
1条回答
网友
1楼 · 发布于 2024-04-27 03:42:29

您可以使用collections.UserList创建自己的列表:

from collections import UserList 


class myList(UserList):
    def _lookup(self, name):
        for item in self.data:
            if item.id == name:
                return item

    def __getitem__(self, name):
        return self._lookup(name)

    def __call__(self, name):
        return self._lookup(name)


class foo:
     def __init__(self, id):
         self.id = id


dummylist = myList([foo(3), foo(4)])
dummylist.append(foo(10))
print(dummylist(10), dummylist(10).id)
print(dummylist[3], dummylist[3].id)

输出:

<__main__.foo object at 0x104a52460> 10
<__main__.foo object at 0x1049cfa00> 3

相关问题 更多 >