特定のインスタンスにメソッドが存在するかどうかを検出する関数を作成し、渡すことができるパラメータは何ですか?適切なパラメータでメソッドを呼び出します。私は初心者だと私はそれを行う方法を見当がつかない:(関数に関する情報を取得して呼び出す方法
答えて
について読むより高度なイントロスペクションのためにhasattr
>>> help(hasattr)
Help on built-in function hasattr in module __builtin__:
hasattr(...)
hasattr(object, name) -> bool
Return whether the object has an attribute with the given name.
(This is done by calling getattr(object, name) and catching exceptions.)
を試してみてください。 inspect
モジュール。
しかし、最初に、あなたがこれを必要とする理由を教えて。もっと良い方法が存在することを99%の確率があります...
最後の文の+1 – Juergen
Pythonはduck typingをサポートしています - 単にインスタンス上でメソッドを呼び出す
OPは、パラメータが何であるかを事前に知らないように聞こえます。実行時にその情報を照会できるようにするためです。 –
引数の値を未知の署名を持つ関数に揃えようとしていますか?
引数値とパラメータ変数をどのように一致させますか?推測?
名前に一致するものを使用する必要があります。
たとえば、次のようなものです。
someObject.someMethod(thisParam=aValue, thatParam=anotherValue)
ああ。待つ。これは既にPythonの第一級の部分です。
しかし、(不可解な理由で)メソッドが存在しない場合はどうなりますか?
try:
someObject.someMethod(thisParam=aValue, thatParam=anotherValue)
except AttributeError:
method doesn't exist.
class Test(object):
def say_hello(name,msg = "Hello"):
return name +' '+msg
def foo(obj,method_name):
import inspect
# dir gives info about attributes of an object
if method_name in dir(obj):
attr_info = eval('inspect.getargspec(obj.%s)'%method_name)
# here you can implement logic to call the method
# using attribute information
return 'Done'
else:
return 'Method: %s not found for %s'%(method_name,obj.__str__)
if __name__=='__main__':
o1 = Test()
print(foo(o1,'say_hello'))
print(foo(o1,'say_bye'))
私はinspect
モジュールはあなたに非常に多くの助けになると思います。 上記のコードで使用されている主な機能はdir,eval,inspect.getargspec
です。あなたは、Pythonのドキュメントで関連するヘルプを得ることができます。
getattr(obj、method_name)の使用はevalを使用するよりはるかにクリーンです。 – Brian
- 1. 関数呼び出し元の情報をPythonで取得する
- 2. .cfcページと機能を呼び出すページに関する情報を取得する方法は? ColdFusion9
- 3. 関数呼び出しごとに静的変数を取得する方法
- 4. デバイスドライブに関する情報を取得する方法
- 5. SQL Selectステートメントに関する情報を取得する方法
- 6. テーブル値関数に関する情報を取得
- 7. Spring-Boot-REST呼び出しでユーザー情報を取得する方法は?
- 8. ジェネレータ関数オブジェクトインスタンスにメタ情報を格納して取り出す方法は?
- 9. data.tableを呼び出す関数を呼び出す関数の記述方法?
- 10. Swift:ランダム関数を呼び出す関数を呼び出す方法は?
- 11. アセンブリに関する情報を取得
- 12. LLVMで関数呼び出しの引数を取得する方法は?
- 13. グローバルなvar document.getElementByIdを.classNameを取得する関数に呼び出す方法
- 14. のPInvoke関数の呼び出し...私は、私はエラーを取得する関数MOUSE_EVENTを呼び出すアンバランススタック
- 15. 別の関数呼び出しで関数を呼び出す
- 16. C:関数から呼び出しルーチンに情報を渡すベストプラクティス
- 17. javascript関数を呼び出す方法
- 18. anglejs関数を呼び出す方法
- 19. 関数を呼び出したIDを取得する方法は?
- 20. ネイティブコード - プログラムで関数呼び出しスタック(バックトレース)を取得する方法
- 21. ブラックベリーのNeighboringCell情報(ネットワーク情報に関連する情報)を取得する方法
- 22. Nodejs:呼び出し元関数のファイル名を取得する
- 23. 関数呼び出しのスコープを取得する
- 24. 関数呼び出しでスタックオーバーフローを取得する
- 25. 関数呼び出しから関数呼び出し名を抽出する
- 26. Class :: functionを呼び出す方法Mock ::関数を取得する
- 27. Robot Frameworkでライブラリインスタンスを取得するPythonライブラリ関数を呼び出す方法
- 28. 関数の実行時間/請求に関する情報の取得と関数呼び出しが成功した場合
- 29. C#ループ、SQLおよび取得に関する情報
- 30. javascript関数の呼び出し方法
存在を確認するときにメソッド名を知っていますか? –