1

呼び出し元が間違ったインスタンスの引数を取得するたびに呼び出され、呼び出し元の__doc__属性を出力して終了する関数を作成したいと考えています。機能は次のとおりです。

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()

__doc__属性を取得する必要があるステップで行き詰まりました。inspectモジュールが次のような方法でそれを実行できることを私は知っています:

name=inspect.stack()[1][3]
possibles=globals().copy()
__doc__= possibles.get(name).__doc__

(3.5を含むすべてのPythonバージョンと互換性のある別のものを提案できます)

しかし、私は別の方法があるに違いないと思います。私の懐疑的な理由は、組み込みreturnステートメントが呼び出し元に何かをすぐに返すため、子関数によってアクセス可能な「フック」または「パイプ」が必要であり、媒体として使用されていることです。親との情報交換のために。

このパイプは送信専用であり、逆方向に送信できる情報はありませんか?

return私が検索したサイトでは、声明は簡単に説明されているだけなので、私はこれに答えることができませんでした. これとは別に、inspectモジュールは、私が知る限り、複数のフレームをスタックに保存し、バックグラウンドで常に実行されます。私にとって、これはミニガンでハエを殺そうとしているようなものです。10フレーム前の関数ではなく、呼び出し元の関数の名前が必要です。これを達成する方法がない場合、私の意見では、これは Python が備えなければならない機能です。私の質問は:

ユニバーサル サポートを使用して、Python で呼び出し元の属性を取得する Pythonic-programmatic な方法は何でしょうか? 私の質問に無知がある場合はすみません。私はどんな修正や「心を開く」こともできます。回答ありがとうございます。

4

1 に答える 1