如何存储不可散列的对象

我正在使用一个为我提供一些对象的库(SocketIO会话,但这是问题范围之外的详细信息)。


我想在连接时存储(引用)这些对象(而不是副本),然后再将其删除。来自C ++背景,我希望aset能够只存储指向这些对象的指针。但是,这些不能散列,因此我不能将它们放在set。而且我不知道用Python的方式来获得类似于指针的东西。我可以将它们放在列表中,但随后删除需要遍历(O(n)),并且插入将允许重复。


是否有任何技巧可以从Python对象中获取行为类似于C ++指针(可比较,有序)的东西?


现在,我正在做:


# global var

my_objects = []


# upon receive:

my_objects.append(session)


# upon removal:

my_objects = my_objects - session


jeck猫
浏览 138回答 1
1回答

忽然笑

一种想法是使用对象的ID。它可以识别对象,尽管只有在您确实使用相同的对象而不是具有相同值的新对象时它才起作用。# global varmy_objects = {}# upon receive:my_objects[id(session)] = session# upon removal:del my_objects[id(session)]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python