It seems to me like you have to ideas of what "equal" means. You want
to update a "non-equal/equal" value in the set (because of a different
time stamp). If you truly considered them equal, the time stamp would
be irrelevant and updating the value in the set would be unnecessary.
I would:
a) /not/ consider two different leases with two different time stamps
to be equal, and
b) as already mentioned, store them in another data structure like a
dictionary.
Not knowing the specifics of the DHCP object structure, if a DHCP lease
object has some immutable key or other durable immutable attribute, I
would be inclined to make that the dictionary key, and store the DHCP
object as the value.
On Fri, Dec 30 2022 at 04:27:56 PM -0600, Ian Pilcher
<arequip...@gmail.com> wrote:
On 12/30/22 15:47, Paul Bryan wrote:
What kind of elements are being added to the set? Can you show
reproducible sample code?
The objects in question are DHCP leases. I consider them "equal" if
the lease address (or IPv6 prefix) is equal, even if the timestamps
have
changed. That code is not small, but it's easy to demonstrate the
behavior.
>>> import datetime
>>> class Foo(object):
... def __init__(self, index):
... self.index = index
... self.timestamp = datetime.datetime.now()
... def __eq__(self, other):
... return type(other) is Foo and other.index == self.index
... def __hash__(self):
... return hash(self.index)
... def __repr__(self):
... return f'Foo({self.index}) created at
{str(self.timestamp)}'
...
>>> f1 = Foo(1)
>>> s = { f1 }
>>> s
{Foo(1) created at 2022-12-30 16:24:12.352908}
>>> f2 = Foo(1)
>>> f2
Foo(1) created at 2022-12-30 16:24:35.489208
>>> s.add(f2)
>>> s
{Foo(1) created at 2022-12-30 16:24:12.352908}
--
========================================================================
Google Where SkyNet meets
Idiocracy
========================================================================
--
https://mail.python.org/mailman/listinfo/python-list