# Question 1
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    # Question 5
    def translater(self, vx, vy):
        self.x = self.x + vx
        self.y = self.y + vy

    def egal(self, p) -> bool:
        if self.x == p.x and self.y == p.y:
            return True
        return False
    
    # Question 7
    # Remarque : comme la méthode spéciale __str__ n'est pas définie, la fonction print
    # appelle également la méthode __repr__ . Vous pouvez essayer !
    def __repr__(self):
        return "Point(" + str(self.x) + ", " + str(self.y) + ")"

    # Question 8
    def __eq__(self, p):
        return self.egal(p)
        
    # Question 9
    def lire_abscisse(self):
        return self.x

    def lire_ordonnee(self):
        return self.y

    def modifier_abscisse(self, x):
        self.x = x

    def modifier_ordonnee(self, y):
        self.y = y

# Question 2
p1 = Point(2, 3)
p2 = Point(-1, 4)

# Question 3
print(p1.x, p2.y)

# Question 4
p1.x = 3
p1.y = 4

# Question 6

assert p2.egal(p1) == False
p3 = Point(1,1)
p3.translater(2,-2)
assert p3.egal(Point(3, -1)) == True

