CommencerCommencer 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

Programmation orientée objet en Python

Afficher le cours

Instructions

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 cet exemple de code.

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