2017-10-27 19 views
0

私はこのようなコードがある場合:Pythonのクラスの可視性

from enum import Enum 

class MainClass: 
    class Options(Enum): 
     OPTION1=1 
     OPTION2=2 
     OPTION3=3 
    class InternalOperation: 
     def function1(self, o): 
      if o == Options.OPTION1: 
       x=0 
       ...... 
     function1= staticmethod(function1) 

私はそれをやってトラブルを抱えていますし、内部の第二のクラスに列挙クラスが見えるようにすることが可能であるかどうかを知りませんがメインクラスと方法。

+4

「MainClass」は必要ありません。あなたが使っている理由はありますか? – HyperNeutrino

+0

あなたはどんな問題を抱えていますか? 'Options'は' InternalOperation'宣言の中でそのまま見えるはずです。 – dhke

+0

@dhkeそれはそうではないようです – HyperNeutrino

答えて

0

あなたは明示的に外部クラスMainClass.Options.OPTION1指定する必要があります:あなたが最初の引数としてselfを使用する場合

from enum import Enum 

class MainClass: 
    class Options(Enum): 
     OPTION1=1 
     OPTION2=2 
     OPTION3=3 
    class InternalOperation: 
     def function1(self, o): 
      if o == MainClass.Options.OPTION1: 
       x= 0 

が静的​​メソッドにしないでくださいを。