![](/img/trans.png)
[英]How to set and get a parent class attribute from an inherited class in Python?
[英]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_1
为True
,不同之处在于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)
folder
是folder_1
的参考,您可以获取folder_1
数据并对其进行编辑
folder.items[0] = 1
print(folder_1.items) # [1, 'b', 'c']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.