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

Comment signer la connexion OKEx API version 5 avec websockets ?

La fonction GCP Cloud pour écrire des données dans BigQuery s'exécute avec succès, mais les données n'apparaissent pas dans la table BigQuery

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