2017-11-25 17 views
2

私の問題の解決策を見つけるためにgoogleに何がわからないので、ここで見つけようとします。Python:str形式を呼び出し可能なメソッドに変換する

私はpygameでPython 3.5.2でGuiを作成しています。私はcurrenctlyポップアップしているエラーに応じて別のボタン機能を持つエラーポップアップに取り組んでいます。私は別のクラスの引数として実行されるはずの関数を与えたい。

def i_want_to_call_this(self): 
    print("Button works.") 

def button_with_action(self, action): 
    self.button(self.action) 

他のクラスには、ボタンは次のようになりますどの機能の引数を与える:

コードは次のようになり、問題はしかし、引数が解析されていること

popup_instance.popup_with_action(i_want_to_call_this) 

文字列形式に変換され、呼び出し可能ではありません。

+1

「ボタン」コードを表示します - おそらく、それを表示するための第1引数としてテキストが必要です。 – furas

答えて

1

私はメソッドbuttonが何であるか分かりません(引数として渡されるコール可能なボタンにバインドされていると思いますが)、その名前を使って関数を呼び出すには、getattrを使用することを検討する必要があります、文字列として渡され、もちろん何も

def button_with_action(self, action): 
    dyn_created_callable = getattr(self, action) 
    self.button(dyn_created_callable) 

を次のように直接あなたが

を実行して使用することになり

def button_with_action(self, action): 
    self.button(getattr(self, action)) 

をやってからあなたを停止します0

#... 
    self.button_with_action('i_want_to_call_this') 
+0

これは私が探していたものです、ありがとう!それは正常に動作しています。 – Julian

+1

それが可能であるのを待っていました。あなたは早く答えました。 :) – Julian

関連する問題