CommencerCommencez gratuitement

Écrire une classe depuis zéro

Vous êtes un·e développeur·se Python qui écrit une bibliothèque de visualisation. Pour chaque élément d’une visualisation, vous souhaitez connaître sa position, mesurer sa distance par rapport aux autres éléments et pouvoir appliquer facilement une symétrie horizontale ou verticale.

L’élément le plus simple d’une visualisation est un point. Dans cet exercice, vous allez écrire une classe représentant un point dans le plan, depuis zéro.

Cet exercice fait partie du cours

<cours>Programmation orientée objet en Python</cours>
Voir le cours

Instructions de l’exercice

Définissez la classe Point qui possède :

  • Deux attributs, x et y — les coordonnées du point dans le plan ;
  • Un constructeur qui accepte deux arguments, x et y, et initialise les attributs correspondants. Ces arguments doivent avoir pour valeur par défaut 0.0 ;
  • Une méthode distance_to_origin() qui retourne la distance entre le point et l’origine. La formule est \(\sqrt{x^2 + y^2}\).
  • Une méthode reflect(), qui effectue la symétrie du point par rapport à l’axe des abscisses (x) ou des ordonnées (y) :
    • accepte un argument axis,
    • si axis="x", elle affecte à l’attribut y (ce n’est pas une faute !) la valeur négative de l’attribut y,
    • si axis="y", elle affecte à l’attribut x la valeur négative de l’attribut x,
    • pour toute autre valeur de axis, elle affiche un message d’erreur. Reflection of a point with respect to y and x axes

Remarque : Vous pouvez utiliser la fonction sqrt() du module numpy ou du module math. Quel que soit votre choix, n’oubliez pas de l’importer avant de commencer la définition de la classe !


Pour vérifier votre travail, vous devez pouvoir exécuter le code suivant sans erreur :

pt = Point(x=3.0)
pt.reflect("y")
print((pt.x, pt.y))
pt.y = 4.0
print(pt.distance_to_origin())

et obtenir le résultat

(-3.0,0.0)
5.0

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Write the class Point as outlined in the instructions
Modifier et exécuter le code