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 22:11] – 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' | # Auto-initialisation des variables de l' | ||
- | for c in __class__.mro()[1: | + | for c in __class__.mro()[1: |
c.__init__(self) | c.__init__(self) | ||
- | # On initialise 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(' | ||
+ | |||
+ | print(' | ||
+ | parent1.test(self) | ||
+ | |||
+ | 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__ == ' | if __name__ == ' | ||
# super() se base sur la première classe rencontrée dans le mro() | # super() se base sur la première classe rencontrée dans le mro() | ||
+ | print(" | ||
print(child.mro()) | print(child.mro()) | ||
+ | |||
+ | print(' | ||
child().test() | child().test() | ||
- | a=child() | + | |
- | print(' | + | a = child() |
- | print(' | + | |
- | a.parent.test() | + | print(' |
- | a.parent2.test() | + | a.defParent1() |
+ | |||
+ | print(' | ||
+ | a.defParent2() | ||
+ | |||
+ | print(' | ||
+ | print(' | ||
+ | |||
+ | | ||
+ | # | ||
+ | |||
+ | | ||
+ | #a.parent1.test() | ||
+ | |||
+ | # | ||
+ | | ||
</ | </ |
python/programmes/classes_heritage_exemple.1490134273.txt.gz · Dernière modification : 2017/03/21 22:11 de root