Rédiger une classe à partir de zéro

Vous êtes un développeur Python et vous écrivez un logiciel de visualisation. Pour tout élément d'une visualisation, vous devez être en mesure de déterminer la position de l'élément, la distance qui le sépare des autres éléments, et de mettre en œuvre facilement un retournement horizontal ou vertical.

L'élément le plus fondamental de toute visualisation est un point unique. Dans cet exercice, vous écrirez une classe pour un point sur un plan en partant de zéro.

Cet exercice fait partie du cours

Programmation orientée objet en Python

Afficher le cours

Instructions d’exercice

Définissez la classe Point qui a :

  • Deux attributs, x et y - les coordonnées du point sur le plan ;

  • Un constructeur qui accepte deux arguments, x et y, qui initialisent les attributs correspondants. La valeur par défaut de ces arguments est 0.0;

  • Une méthode distance_to_origin() qui renvoie la distance du point à l'origine. La formule pour cela est \(\sqrt{x^2 + y^2}\).

  • Une méthode reflect(), qui reflète le point par rapport à l'axe des x ou des y :

    • accepte un argument axis,

    • si axis="x", il définit l'attribut y (ce n'est pas une faute de frappe !) à la valeur négative de l'attribut y,

    • si axis="y", il attribue à l'attribut x la valeur négative de l'attribut x,

    • pour toute autre valeur de axis, affiche un message d'erreur.

Réflexion d'un point par rapport aux axes y et x

Note : Vous pouvez choisir d'utiliser la fonction sqrt() du paquetage numpy ou math, mais quel que soit le paquetage choisi, n' oubliez pas de l'importer avant de commencer la définition de la classe !


Pour vérifier votre travail, vous devez être en mesure d'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 renvoie le résultat

(-3.0,0.0)
5.0

Exercice interactif pratique

Essayez-vous à cet exercice en complétant cet exemple de code.

# Write the class Point as outlined in the instructions