繁体   English   中英

python:如何从一组自定义 class object 中获取项目

[英]python: how to get an item from a set of custom class object

class Folder:
    def __init__(self, name):
        self.name = name
        self.items = []
    
    def __hash__(self):
        return hash(self.name)
    
    def __eq__(self, other):
        return self.name == other.name

让我们创建一些文件夹:

folder_1 = Folder('folder_1')
folder_1.items = ['a', 'b', 'c']


folder_2 = Folder('folder_2')
folder_3 = Folder('folder_3')

folders = set([folder_1, folder_2, folder_3])

现在我要做的是在文件夹集中找到一个文件夹并在不更改folders folders的情况下访问其项目属性。

folder_to_find = Folder('folder_1')

我们可以注意到folder_to_find == folder_1True ,不同之处在于folder_1设置了items属性,而folder_to_find没有。

我可以检查folder_to_find像 object 存在于使用in运算符设置的folders中,但无法在folder_1的帮助下获取folder_to_find ,以便我可以访问folder_1 object 的items属性。

我的解决方法是使用 python 字典而不是 set。

不过,有什么方法可以用 O(1) 实现这一点?

您可以使用简单for循环或带有生成器表达式的next

folder = next((folder for folder in folders if folder == folder_to_find), None)

folderfolder_1的参考,您可以获取folder_1数据并对其进行编辑

folder.items[0] = 1
print(folder_1.items) # [1, 'b', 'c']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM