python:programmes:classes_heritage_exemple
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| python:programmes:classes_heritage_exemple [2017/03/21 21:09] – root | python:programmes:classes_heritage_exemple [2017/06/01 11:02] (Version actuelle) – root | ||
|---|---|---|---|
| Ligne 2: | Ligne 2: | ||
| <code python> | <code python> | ||
| - | # | + | class parent1: |
| - | # -*- coding: utf-8 -*- | + | |
| - | + | ||
| - | class parent(object): | + | |
| def __init__(self): | def __init__(self): | ||
| - | print(" | + | print(" |
| - | self.var = 'myvar' | + | self.var1 = 'myvar1' |
| + | |||
| + | def defParent1(self): | ||
| + | print(' | ||
| def test(self): | def test(self): | ||
| - | print(' | + | print(' |
| - | class parent2(object): | + | class parent2: |
| def __init__(self): | def __init__(self): | ||
| print(" | print(" | ||
| self.var2 = ' | self.var2 = ' | ||
| + | |||
| + | def defParent2(self): | ||
| + | print(' | ||
| def test(self): | def test(self): | ||
| print(' | print(' | ||
| - | class child(parent, parent2): | + | class child(parent1, parent2): |
| def __init__(self): | def __init__(self): | ||
| print(" | print(" | ||
| + | # Auto-initialisation des variables de l' | ||
| + | for c in __class__.mro()[1: | ||
| + | c.__init__(self) | ||
| + | # | ||
| + | # On initialise dynamiquement les variables avec le nom des parents | ||
| + | #for c in child.mro()[1: | ||
| + | # exec(' | ||
| def test(self): | def test(self): | ||
| - | parent.test(self) | ||
| - | parent().test() | ||
| - | parent2().test() | ||
| - | super().test() | ||
| - | super().__init__() | ||
| - | parent.__init__(self) | ||
| - | parent2.__init__(self) | ||
| - | super(__class__, | ||
| - | super(child, | ||
| print(' | print(' | ||
| - | # super() se base sur la première classe rencontrée dans le mro() | + | print(' |
| - | print(child.mro()) | + | parent1.test(self) |
| - | child().test() | + | |
| + | print(" | ||
| + | parent1().test() | ||
| + | |||
| + | print(" | ||
| + | parent2().test() | ||
| + | |||
| + | print(' | ||
| + | super().test() | ||
| + | |||
| + | print(' | ||
| + | super().__init__() | ||
| + | |||
| + | print(' | ||
| + | super(parent1, | ||
| + | |||
| + | print(' | ||
| + | parent1.__init__(self) | ||
| + | |||
| + | print(' | ||
| + | parent2.__init__(self) | ||
| + | |||
| + | print(' | ||
| + | super(__class__, | ||
| + | |||
| + | print(' | ||
| + | super(child, | ||
| + | |||
| + | |||
| + | if __name__ == ' | ||
| + | | ||
| + | print(" | ||
| + | | ||
| + | |||
| + | print(' | ||
| + | child().test() | ||
| + | |||
| + | print(' | ||
| + | a = child() | ||
| + | |||
| + | print(' | ||
| + | a.defParent1() | ||
| + | |||
| + | print(' | ||
| + | a.defParent2() | ||
| + | |||
| + | print(' | ||
| + | print(' | ||
| + | |||
| + | # | ||
| + | # | ||
| + | |||
| + | # | ||
| + | # | ||
| + | |||
| + | # | ||
| + | #a.parent2.test() | ||
| </ | </ | ||
python/programmes/classes_heritage_exemple.1490130545.txt.gz · Dernière modification : de root
