Hm,
irgendiwe verstehe ich es noch nicht ganz:
Hier mal etwas mehr Code damit man vlt. was ich meine:
Code: Alles auswählen
import ipaddress
class _HashLogic(object):
def __init__(self, obj_hash):
self._hash = int(obj_hash)
def __hash__(self):
return self._hash
def __eq__(self, other):
if isinstance(other, _HashLogic):
return self._hash == other._hash
else:
return NotImplemented
def __ne__(self, other):
if isinstance(other, _HashLogic):
return self._hash != other._hash
else:
return NotImplemented
class Proxy(_HashLogic):
def __init__(self, ip, port, *args, **kargs):
self._ip = ipaddress.ip_address(ip)
self._port = Port(port)
_HashLogic.__init__(self, str(self._port) + str(int(self._ip)).zfill(39))
#39 is the maximum length of a int(ip_address)
Der Hash ist hier also sowohl ein Integer als auch Eindeutig da ich ein Objekt vom Typ Proxy das den selben Port und die selbe IP hat als das selbe Objekt betrachte auch wenn es vlt. an einer anderen Speicheraddresse liegt.
Zur Erklärung warum ich das mache:
Ich will am Ende Dicts, Sets und Queues mit Proxies haben. Auf der einen Seite ist ein Prozess der immer neue Proxy Objekte erzeugt, ein Prozess testet ob diese (noch) funktionieren und einer speichert sie ab. Nun möchte ich eine effiziente Methode haben um schnell zu testen, ob ein Proxy bereits in einem von meinen Prozessen ist. Und dazu will ich die bereits gefunden in einem Set haben. Zwar sind meine Proxies hier nicht komplett immutable aber der Teil für den ich ein Set haben will ist es (die IP und der Port).
Vlt wird jetzt klarer was ich warum mache und wenn ich etwas furchtbar falsch mache warum ich es nicht verstehe.
Gehe aber jetzt erstmal ins Bett und nochmals Danke für die Antworten!