2016-12-02 9 views
1

クラスそのものを参照しようとしています。例えば、Python:内部でクラスを参照する方法は?

class Test: 
    FOO_DICT = {1 : Test.bar} # NameError: name 'Test' is not defined 

    @staticmethod 
    def bar(): 
     pass 

この使用法は意味がありますか?より良い選択肢はありますか? ありがとう!

+0

ただ、 'バーを使用します'それ自体。 – DyZ

+0

@DYZ 'bar'はまだ定義されていないので、うまくいきません。 –

+0

下記のように、定義の順序を変更してください。 – DyZ

答えて

3

:最初の関数を定義し、テストを削除します。

class Test: 
    @staticmethod 
    def bar(): 
     pass 

    FOO_DICT = {1: bar} 
+0

おそらく順序依存性を避けるべきですが、より良いパターンがないようです。 – cheng

0

あなたは、このようなクラスのFOO_DICT = {1 : Test.bar}外を移動することができます:あなたは辞書はクラスになりたい場合は

class Test: 
    @staticmethod 
    def bar(): 
     pass 
Test.FOO_DICT = {1: Test.bar} 
+1

これはクラスのカプセル化に違反し、避けるべきです。 – DyZ

関連する問題