呼び出し元が間違ったインスタンスの引数を取得すると、呼び出し元の__doc__
属性を出力して終了するたびに呼び出される関数を作成します。私は__doc__
属性を取得する必要があるステップで捕まってしまった呼び出し元関数がPythonで呼び出し側の属性を取得できるようにする
def checktype(objects,instances):
if not all([isinstance(obj,instance) for
obj,instance in zip(objects,instances)]):
print 'Type Error'
#Get __doc__ from caller
print __doc__
exit()
:機能は以下の通りです。
(あなたは3.5を含むすべてのPythonのバージョンと互換性のある別のものを、提案することができます)
name=inspect.stack()[1][3]
possibles=globals().copy()
__doc__= possibles.get(name).__doc__
が、私はそこにする必要がありだと思う:私はinspect
モジュールは、次のような方法で、それを行うことができることを知っています別の方法。私の懐疑的な理由は、組み込みのreturn
ステートメントが呼び出し元に即座に何かを返すため、子関数でアクセス可能な "フック"または "パイプ"が必要であることを意味します。私の興味を引く最初の質問は次のとおりです:
このパイプは送信専用で、情報は逆向きに送信できませんか?
return
のステートメントは、検索したサイトで簡単に説明されているため、これには答えられませんでした。これとは別に、inspect
モジュールは、私が知る限り、複数のフレームをスタックに保存し、常にバックグラウンドで実行します。私にとって、これは私がミニグンでフライを殺そうとしているようなものです。私は、10フレーム前の関数ではなく、呼び出し元関数の名前が必要です。これを達成する方法がない場合、私の意見では、これはPythonが持っていなければならない機能です。私の質問は次のとおりです。
Pythonで呼び出し元の属性を取得するための、Pythonプログラミングによる方法は何でしょうか?私の質問に無知がある場合は、私は任意の訂正と "心の開口部"に開いています。あなたの答えはありがとうございました。
に関連している可能性があり、いくつかの機能を持っています。 – polku
@polkuデコレータの中で関数の引数をどのように渡すかを知りたいと思うでしょう。シグナルハンドラが設定されていれば、ラッパーは良いアイデアですが、これはLinuxのディストリビューションにのみ適していると思います。 –
デコレータの使い慣れたIDKですが、関数の引数を渡すことはありません。私の理解は、さまざまな機能のために再利用可能な型チェックの仕組みが必要だということです。それは私が使用するものです(印刷と終了の代わりにカスタム例外があります)が、間違っているかもしれません。 – polku