# -*- coding: utf-8 -*-

# definition de la classe Point
# qui modelise des points sur un plan 2D
# avec une abcisse x et une ordonnee y

from math import sqrt

class Point:
    """Definit les points de l'espace 2D."""

    def __init__(self, x=0, y=0):
        " Constructeur avec valeurs par defaut des coordonnées "
        self.x_ = x
        self.y_ = y

    def affiche(self):
        " Modele d'affichage des attributs d'un Point."
        print("coordonnee horizontale = ", self.x_, " coordonnees verticale = ", self.y_)

    def getx(self):
        """

        :return:     valeur attribut abscisse
        """
        return self.x_

    def gety(self):
        """

        :return:    valeur attribut ordonnée
        """
        return self.y_

    def setx(self, newx):
        """
        :param newx:    nouvelle valeur pour attribut abscisse
        :return:        modifie l'attribut
        """

        self.x_ = newx

    def sety(self, newy):
        """
        :param newy:    nouvelle valeur pour attribut ordonnée
        :return:        modifie l'attribut
        """

        self.y_ = newy

    def deplace(self, dx, dy):
        """
        :param dx:  déplacement sur l'axe des x
        :param dy:  déplacement sur l'axe des y
        :return:    modifie les attributs de la forme
        """

        self.x_ += dx
        self.y_ += dy

    def distance(self):
        """

        :return:    la distance du point self à l'origine
        """
        return sqrt(self.x_*self.x_ + self.y_*self.y_)

if __name__ == "__main__":
    pt = Point(3, 4)
    print(pt)
