Classes python

Résolu/Fermé
dotten Messages postés 17 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 5 août 2008 - 2 avril 2008 à 09:11
 grom971 - 24 juin 2011 à 16:24
Bonjour,

Sous python peut on avoir une classe B qui soit dans une autre classe A?
si oui, comment peut on utiliser les variables statiques de la classe A dans B et inversement?

Merci.

2 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
2 avril 2008 à 11:00
Sous python peut on avoir une classe B qui soit dans une autre classe A?

oui.
Par composition ou héritage, comme tu veux.


si oui, comment peut on utiliser les variables statiques de la classe A dans B et inversement?

Généralement, il vaut mieux éviter les variables de classe ("statiques"). Mais bon si vraiment tu le veux:

Exemple: Une classe B accède à une variable de classe par composition:

class A:
    varClasseA = 5   # C'est une variable de classe.

class B:
    def __init__(self):
        pass
    def coucou(self):
        print A.varClasseA

b = B()
b.coucou()


ce qui affiche: 5


Et par héritage:

class A:
    varClasseA = 5   # C'est une variable de classe.

class B(A):
    def __init__(self):
        pass
    def coucou(self):
        print self.__class__.varClasseA

b = B()
b.coucou()
1
dotten Messages postés 17 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 5 août 2008 3
3 avril 2008 à 13:45
Merci, ça m'a beaucoup aidé.
0
Enfin un exemple clair, merci !
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
3 avril 2008 à 13:50
De préférence, définir les variables comme vairables d'instance et non de classe:

class A:
    def __init__(self):
        self.varInstance = 7  # C'est une variable d'instance.
1