1

アプリケーションがユーザーに提供しているすべてのAPIのリストを取得したいと思います。

アプリケーションの大部分はC/C++で記述されています。

私はPythonがそのための標準機能を持っていることを望んでいました、私は名前空間の観点からこれにアプローチしようとしていました、なぜなら私はすべてのキーワードに興味がなく、APIで提供されるものだけに興味があるからです、しかし私は単に知りません関数の観点からどこから始めればよいのか、私は自分が達成しようとしていることに関連する何かをしている関数について知りません。

アプリケーションはPython3.xを使用してAPIを提供します。

4

1 に答える 1

2

Pythonには、言語プリミティブとしてのAPI(またはインターフェース)の概念がありません。モジュールまたはパッケージは、そのメンバー(関数と変数)の一部を公開し、他のメンバーを非表示にします。したがって、関心のあるモジュールがわかっいる場合、この意味での「公開」はAFAIKで最も意味のある概念です。

公開されたメンバーは、を実行した場合にインポートされるメンバーと同じですfrom <module> import *。ご存知かもしれませんが、1つのアンダースコアで始まる、または2つのアンダースコアで始まり、2で終わらないメンバー名は、APIの一部であることが意図されておらず、エクスポートされません。デフォルトでは、他のすべてが公開されますが、モジュールは、変数にエクスポートする必要があるものをリストすることにより、APIをカスタマイズできます。パッケージからの*のインポートを参照してください。__all__

したがって、探しているAPIを見つけるには、最初に関心のあるトップレベルモジュールを知る必要があります。問題のアプリケーションがPythonで単一のパッケージとして利用できる場合は、それから始めます。変数がある__all__場合、その内容はパッケージのAPIです。そうでない場合は、の内容を調べて、dir(<package>)1つのアンダースコアのみで始まるもの、または2つのアンダースコアで始まり、2つで終わらないものを除外します。大きなパッケージを見ている場合、あなたが見つけるもののいくつかはそれ自体がモジュールまたはパッケージです。同じ方法で、再帰的にそれらを調べます。

于 2012-09-04T16:56:38.957 に答える