• [^] # Re: ok

    Posté par . En réponse au message détecter \. Évalué à 3. Dernière modification le 14 juin 2020 à 11:28.

    Pour info: le mot self n'est ni un mot-clé ni un mot réservé, c'est une convention d'écriture servant à discerner les méthodes (fonctions membres d'une classe) des fonctions non membres. Donc si tu vois le mot self apparaître dans la liste des arguments à l'appel d'un objet, ce dernier est une fonction membre d'une classe. De plus, il n'apparaît (en premier) dans les arguments d'un appel que lors des appels à l'intérieur des fonctions membres d'une même classe — d'où... self .

    Si tu définis une fonction à l'intérieur de la définition d'une classe, comme ceci:

     class Foo(object):
     def foo():
     # foo() est un objet de type 'fonction' de la classe Foo
     print('In Foo.foo!')

    L'objet foo() est une fonction de la classe Test (attention, ce n'est ni une méthode ni une méthode de classe, cette dernière étant un autre concept):

     Foo.foo()

    Sachant cela, on définit donc une méthode à l'aide de l'indice 'self':

     class Bar(Foo):
     def bar(self):
     # bar() est une méthode de la classe Bar
     print('In Bar.bar...')
     def baz(self):
     # Appeler la méthode bar:
     bar(self)
     # Appeler l'objet fonction de Foo:
     Foo.foo()
     # On peut aussi appeler foo() de cette manière, grâce à l'héritage:
     __class__.foo()
     obj = Bar()
     # Appeler une méthode de Bar via une de ses instances
     obj.bar()
     obj.baz()