2016-07-21 3 views
1

インスタンス化されたクラスで使用するメソッド名を作成するにはどうすればよいですか?私はクラス 'jsonmaker'でメソッドを実行しようとしています。このメソッドは、filein文字列で指定されたデータ型に対応しています。私は上記のコードをしようとするとメソッド名の作成

for filein in filein_list: 
    datatype = filein[(filein.find('_')):-8] 
    method_name = pjoin(datatype + 'populate') 
    instantiated_class.method_name(arg1, arg2, arg3) 

は、私はエラーメッセージが表示されます

'AttributeError: 'jsonmaker' object has no attribute 'method_name'' 

(データ型+「移入」)ので、どのように私はクラスを教えてくださいpjoinと一致するjsonmakerでの方法は実際にありますそれを認識するために?私はこれをよく説明していない場合は申し訳ありません。

答えて

2

変数を直接ドット参照の背後に置くことによって、クラスインスタンスの属性を参照することはできません。変数が属性の名前と同じ文字列を参照しているときでもありません。

あなたは代わりに文字列からmethodを取得し、それらのパラメータでそれを呼び出すためにgetattrを使用することができます。

getattr(instantiated_class, method_name)(arg1, arg2, arg3) 
+0

これは私が探していたものです。私はgetattrが実行のポイントまであなたが知らない変数の関数を実行するためだけであったが、私は持っていた。ありがとう。 – jmdeamer

関連する問題