Python: Héritage: Difference between revisions

From Wiki Cours
Jump to navigation Jump to search
No edit summary
Line 6: Line 6:
== Déclaration et initialisation ==
== Déclaration et initialisation ==


Voici la syntaxe pour faire dériver la classe B de la classe A:
On peut créer une nouvelle classe en la faisant dériver d'une autre classe. Dans ce cas, la classe hérite des attributs et méthodes de la classe mère et on peut lui en ajouter d'autres qui la spécialiseront et auxquelles la classe mère n'aura pas accès. Voici la syntaxe pour que 'B' dérive de 'A', on notera la syntaxe des constructeurs.
<source lang="py">
<source lang="py">
class A:  # classe parente
class A:  # classe parente
     data = 0
     data_a = 0
     def __init__(self,d=1):
     def __init__(self,d=1):
         self.data = d
         self.data_a = d
    def f_a(self):
        print "Je suis de la classe A"


class B(A): # la classe B dérive de A
class B(A): # la classe B dérive de A
Line 17: Line 19:
     def __init__(self,d=2,b=1):
     def __init__(self,d=2,b=1):
         A.__init__(self,d)  # appelle le constructeur de la classe parente
         A.__init__(self,d)  # appelle le constructeur de la classe parente
         data_b = b
         self.data_b = b
    def f_b(self):
        print "Je suis de la classe B"


b = B()
b = B(3,4)
b.f_a()
b.f_b()
print b.data_a, b.data_b
a = A()
a.f_a()
a.f_b()  # renvoie une erreur
</source>
</source>

Revision as of 22:07, 14 September 2015

<--Sommaire

Il peut exister une hiérarchie naturelle entre objets dans le sens que certains sont des spécialisations d'objet plus génériques. Ainsi, on peut dériver une classe d'une autre appelée parente. Dans ce cas, la classe dérivée héritera de tous les attributs et méthodes de la classe parente. On pourra lui en ajouter d'autres mais seule cette classe pourra alors les utiliser.

Déclaration et initialisation

On peut créer une nouvelle classe en la faisant dériver d'une autre classe. Dans ce cas, la classe hérite des attributs et méthodes de la classe mère et on peut lui en ajouter d'autres qui la spécialiseront et auxquelles la classe mère n'aura pas accès. Voici la syntaxe pour que 'B' dérive de 'A', on notera la syntaxe des constructeurs.

class A:   # classe parente
    data_a = 0
    def __init__(self,d=1):
        self.data_a = d
    def f_a(self):
        print "Je suis de la classe A"

class B(A): # la classe B dérive de A
    data_b = 0
    def __init__(self,d=2,b=1):
        A.__init__(self,d)  # appelle le constructeur de la classe parente
        self.data_b = b
    def f_b(self):
        print "Je suis de la classe B"

b = B(3,4)
b.f_a()
b.f_b()
print b.data_a, b.data_b
a = A()
a.f_a()
a.f_b()  # renvoie une erreur