Classes python

Résolu
dotten Messages postés 17 Statut Membre -  
 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.
Configuration: Windows XP
Firefox 2.0.0.12

2 réponses

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