Classes python

Résolu
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. Modérateur
    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. Modérateur
      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. Merci, ça m'a beaucoup aidé.
      2. Enfin un exemple clair, merci !