J'ai des variables qui sont liées deux par deux, et je souhaite les stocker en tant qu'attributs d'objets de frères et sœurs ().
Donc, je crée une classe: p> La raison pour laquelle j'utilise des ensembles dans EQ strong> est que je ne sais pas (et que je ne me soucie pas) quelle variable sera considérée comme frère et qui comme soeur.
En fait, P> a = {s1: 5}
a[s2] = 4
3 Réponses :
Merci beaucoup pour la suggestion
hachage avec un non liée à la question, mais recommandé - vous devez éviter de retourner Notez que le hachage ne doit pas changer dans la chronologie d'un objet. Tant que vous n'écrivez pas dans le gelenget code> au lieu d'un tuple: Aucun code> Dans le __ eq __ code>: p> _Brother code> et _ster code> attributs après init, vous devez être en sécurité. P> P>
Merci beaucoup pour la solution et la suggestion. Time d'attente Lapsus accepter votre réponse.
Merci pour le commentaire supplémentaire.
Au fur et à mesure que d'autres réponses ont déjà signalé, en utilisant FROZENSET est Une approche valide, un autre choix utile pour ces types de cas envisage d'utiliser NamedTuples , exemple ci-dessous:
from collections import namedtuple
BaseSiblings = namedtuple('Siblings', 'brother sister')
class Siblings(BaseSiblings):
def __hash__(self):
return super().__hash__()
def __eq__(self, other):
if isinstance(other, Siblings):
return {self.brother, self.sister} == {other.brother, other.sister}
return NotImplemented
obj1 = Siblings('a', 'b')
print(obj1)
obj2 = Siblings('b', 'a')
print(obj2 == obj1)
print({obj1: '1'} == {obj2: '1'})
O.P. Veut que la commande est insensible à l'ordre, cependant.