Outils pour utilisateurs

Outils du site


python:programmes:classes_heritage_exemple

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
python:programmes:classes_heritage_exemple [2017/06/01 10:45] rootpython:programmes:classes_heritage_exemple [2017/06/01 11:02] (Version actuelle) root
Ligne 6: Ligne 6:
         print("init parent1")         print("init parent1")
         self.var1 = 'myvar1'         self.var1 = 'myvar1'
 +
 +    def defParent1(self):
 +        print('defParent1')
  
     def test(self):     def test(self):
Ligne 14: Ligne 17:
         print("init parent2")         print("init parent2")
         self.var2 = 'myvar2'         self.var2 = 'myvar2'
 +
 +    def defParent2(self):
 +        print('defParent2')
  
     def test(self):     def test(self):
Ligne 24: Ligne 30:
         for c in __class__.mro()[1:-1]:         for c in __class__.mro()[1:-1]:
             c.__init__(self)             c.__init__(self)
 +            #exec('self.{} = c.__init__(self)'.format(c.__name__))
             # On initialise dynamiquement les variables avec le nom des parents             # On initialise dynamiquement les variables avec le nom des parents
             #for c in child.mro()[1:]:             #for c in child.mro()[1:]:
-            #    exec('self.{} = c()'.format(c.__name__))+            #    exec('self.{}=c()'.format(c.__name__))
  
     def test(self):     def test(self):
Ligne 73: Ligne 80:
     a = child()     a = child()
  
-    #print('\n* a.parent1.var1 : a.parent1.var1)+    print('\n* a.defParent1() => appelle la méthode defParent1 seulement présente dans parent1') 
 +    a.defParent1() 
 + 
 +    print('\n* a.defParent2() => appelle la méthode defParent2 seulement présente dans parent2'
 +    a.defParent2() 
     print('\n* a.var1 : ' + a.var1)     print('\n* a.var1 : ' + a.var1)
     print('\n* a.var2 : ' + a.var2)     print('\n* a.var2 : ' + a.var2)
 +
 +    #print('\n* a.parent1.var1 : ' + a.parent1.var1)
 +    #print('\n* a.parent2.var2 : ' + a.parent2.var2)
  
     #print('\n* Appelle explicitement la méthode test() sur parent1 (rendu possible car on a créé le nom des classes enfants dynamiqudment dans __init__())')     #print('\n* Appelle explicitement la méthode test() sur parent1 (rendu possible car on a créé le nom des classes enfants dynamiqudment dans __init__())')
     #a.parent1.test()     #a.parent1.test()
- 
-    #print('\n* a.parent2.var2 : ' + a.parent2.var2) 
  
     #print('\n* Appelle explicitement la méthode test() sur parent2 (rendu possible car on a créé le nom des classes enfants dynamiqudment dans __init__())')     #print('\n* Appelle explicitement la méthode test() sur parent2 (rendu possible car on a créé le nom des classes enfants dynamiqudment dans __init__())')
     #a.parent2.test()     #a.parent2.test()
 </code> </code>
python/programmes/classes_heritage_exemple.1496313911.txt.gz · Dernière modification : 2017/06/01 10:45 de root