Différence entre méthode liée et fonction
class TableauNoir:
def __init__(self, surface):
self.surface = surface
def ecrire(self, message):
""" Méthode permettant d'écrire sur la surface du tableau.
"""
self.surface = message
tab = TableauNoir("bonjour")
# bound method TableauNoir.ecrire of '__main__.TableauNoir object at 0x000001B5F7A4BE80'
print(TableauNoir.ecrire)
# function TableauNoir.ecrire at 0x000001B5F5E855A0
Je vois qu'il y a une différence entre tab.ecrire et TableauNoir.ecrire.
1) C'est quoi la diff entre une bound method TableauNoir.ecrire et une function TableauNoir.ecrire
2) Pourquoi est ce qu'elles n'ont pas la même adresse non plus ?
Salut,
Quand tu fais ça :
TableauNoir.ecrire(tab, "test")
Il faut passer explicitement une instance. C'est la fonction brute en fait.
Ici : tab.ecrire("test") La méthode est déjà "connectée" à une instance.
Et effectivement, les adresses sont différentes :
-
TableauNoir.ecrireest l'adresse de ta méthode créé lorsque tu as défini la classe -
tab.ecrirea sa propre adresse car tu es sur un nouvel objet bound method séparé
En fait, à chaque fois que je fais un tab.ecrire, Python va en coulisse me retourner un nouvel objet "bound method", c'est ça ?
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte