2016-02-14 3 views
0

J'ai un peu de dilemme avec les classes imbriquées Python. Ce que je suis en train de faire est d'obtenir des variables d'une fonction au niveau supérieur de la classe A et les utiliser dans la sous-classe B. Quelque chose comme cePython-get des variables instantanées de la classe parent à partir d'une classe imbriquée

class A: 
    def function_A(): 
     value = 5 

     class B: 
     def function_B(self): 
      print (A.value) 

Cette méthode fonctionne ci-dessous si je tourne la variable dans une variable de classe ci-dessous, mais comme il ne fait pas ce que je veux:

class A: 
    value = 5 

     class B: 
     def function_B(self): 
      print (A.value) 

Je suppose que cela est impossible si quelqu'un peut fournir une solution de contournement?

Répondre

-1

La classe A n'a pas d'attribut value, car la variable value est définie à l'intérieur de la fonction function_A. Par conséquent, vous n'avez pas besoin d'accéder à value en tant qu'attribut de la classe, mais en tant que variable normale à laquelle vous pouvez accéder à partir de la classe B, car elle se trouve dans la même portée. Vous devez retirer le A. avant value

Exemple:

class A: 
    def function_A(): 
     value = 5 

     class B: 
      def function_B(): 
       print (value) 

     var = B 
     var.function_B() 

test = A 
test.function_A() 
1

La value variable est locale à function_A et existe seulement pendant cette méthode est en cours d'exécution. Il n'y a simplement rien à accéder lorsqu'il n'est pas en cours d'exécution, ce qui sera le cas lorsque function_B est en cours d'exécution. En particulier, dans votre premier exemple, c'est pas un attribut de A, ou de toute instance de A.

Il n'est pas clair à partir de votre code ce que vous avez réellement l'intention de faire avec un tel value, il est donc difficile de faire d'autres suggestions.