Classes python

Résolu
dotten Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
 grom971 -
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   Statut Modérateur Dernière intervention   15 662
 
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   Statut Membre Dernière intervention   3
 
Merci, ça m'a beaucoup aidé.
0
grom971
 
Enfin un exemple clair, merci !
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
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