Méthodes : fonctions des objets
Une méthode c'est un fonction qui agit sur un objet, vous pouvez voir un exemple ci-dessous
class Position:
def __init__(self, x, y):
self.x = x
self.y = y
def move(self, x=0, y=0):
self.x += x
self.y += y
pos = Position(10, 5)
print(pos.x, pos.y) # 10 5
pos.move(5, 2)
print(pos.x, pos.y) # 15 7
Position.move(pos, -5, -2) # pas approprié
print(pos.x, pos.y) # 10 5
Comme vous pouvez le voir move et une fonction qui prend en paramètre self, x, y et ajoute x à self.x et y à self.y. Il y a deux façons de le faire la première est la façon normale et la deuxième la manière explicite expliquant l'utilisation du mot-clé self.
De plus comme vous avez pu le constater précédemment, __init__ est aussi une méthode spécial marquée par la présence de __ au début et fin. Comme autre méthode spécial on peut aussi compter __new__ généralement utilisé pour l'héritage des types natifs. ces méthodes sont nommé Modèle de données, elles permettent entre autres de tester l'égaliter, l'affichage, l'iteration, l'appartenance ...
class Position:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
return isinstance(other, Position) and self.x==other.x and self.y==self.y
def __str__(self):
return f"Position(x={self.x}, y={self.y})"
def __add__(self, other):
return Position(self.x+self.x, self.y+other.y)
pos1 = Position(10, 5)
pos2 = Position(9, 8)
print(pos1) # appel à __str__, out : Position(x=10, y=5)
print(pos1==pos2) # appel à __eq__, out : False
print(pos1+pos2) # appel à __add__, out : Position(x=20, y=13)