特定のインスタンスにメソッドが存在するかどうかを検出する関数を作成し、渡すことができるパラメータは何ですか?適切なパラメータでメソッドを呼び出します。私は初心者だと私はそれを行う方法を見当がつかない:(関数に関する情報を取得して呼び出す方法
答えて
について読むより高度なイントロスペクションのために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. テーブル値関数に関する情報を取得
- 3. デバイスドライブに関する情報を取得する方法
- 4. SQL Selectステートメントに関する情報を取得する方法
- 5. data.tableを呼び出す関数を呼び出す関数の記述方法?
- 6. ジェネレータ関数オブジェクトインスタンスにメタ情報を格納して取り出す方法は?
- 7. アセンブリに関する情報を取得
- 8. C:関数から呼び出しルーチンに情報を渡すベストプラクティス
- 9. ネイティブコード - プログラムで関数呼び出しスタック(バックトレース)を取得する方法
- 10. 関数呼び出しから関数呼び出し名を抽出する
- 11. ブラックベリーのNeighboringCell情報(ネットワーク情報に関連する情報)を取得する方法
- 12. Nodejs:呼び出し元関数のファイル名を取得する
- 13. 関数呼び出しのスコープを取得する
- 14. 関数呼び出しでスタックオーバーフローを取得する
- 15. メイン関数の呼び出し方法
- 16. javascript関数の呼び出し方法
- 17. lincをクラス関数に渡して呼び出す方法は?
- 18. phpにアクセスしてモジュール関数を呼び出す方法は?
- 19. document.ready関数で関数を呼び出す方法をJquery
- 20. PHP関数の呼び出しスコープを取得しますか?
- 21. C#ループ、SQLおよび取得に関する情報
- 22. 目的関数CでJavaScript関数を呼び出す方法
- 23. ワークフロー内の関数から関数を呼び出す方法
- 24. 別の関数で関数を呼び出す方法は?
- 25. jquery関数からphp関数を呼び出す方法
- 26. MVVMを関数呼び出しに実装する方法は?
- 27. 関数が呼び出されるたびに乱数を得る方法
- 28. パラメータを渡して関数を呼び出す方法は?
- 29. コンポーネントをクリックして関数を呼び出す方法は?
- 30. maven依存関係に関する集約情報を取得
存在を確認するときにメソッド名を知っていますか? –