É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
Instructions
Définissez la classe Point qui possède :
- Deux attributs,
xety— les coordonnées du point dans le plan ; - Un constructeur qui accepte deux arguments,
xety, et initialise les attributs correspondants. Ces arguments doivent avoir pour valeur par défaut0.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’attributy(ce n’est pas une faute !) la valeur négative de l’attributy, - si
axis="y", elle affecte à l’attributxla valeur négative de l’attributx, - pour toute autre valeur de
axis, elle affiche un message d’erreur.
- accepte un argument
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