Ajout d'objets avec plusieurs attributs

J'essaie de comprendre s'il existe un meilleur moyen d'obtenir le même résultat à partir de cette ligne de code. Par exemple : définir un nouvel objet (c3) à l'intérieur de la fonction add_coordinates si possible ? Ou est-ce le moyen le plus simple et le plus efficace d'ajouter les deux objets.

class Values:
def __init__(self,x,y):
self.x=x
self.y=y
def add_values(self,x,y):
self.x=x+self.x
self.y=y+self.y

c1 = Values(5,6)
c2 = Values(7,9)
c3= Values(0,0)
c3.add_values(c1.x,c1.y)
c3.add_values(c2.x,c2.y)
print(c3.x)
print(c3.y)


Solution du problème

Une amélioration serait de remplacer la __iadd__méthode dunder afin que vous puissiez utiliser +=, plutôt que d'utiliser une fonction personnalisée qui fait essentiellement la même chose:

class Values:
def __init__(self,x,y):
self.x=x
self.y=y

def __iadd__(self, other):
return Values(self.x + other.x, self.y + other.y)
c1 = Values(5,6)
c2 = Values(7,9)
c3= Values(0,0)
c3 += c1
c3 += c2
print(c3.x)
print(c3.y)

Cela imprime :

12
15

Commentaires

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"