4

Python モジュールもオブジェクトです。したがって、特定のオブジェクトがモジュール(/パッケージ)であるかどうかを次のようにテストできると思います。

>>> import sys, os, my_module
>>> isinstance(sys, ModuleClass)
True
>>> isinstance(os, ModuleClass)
True
>>> isinstance(my_module, ModuleClass)
True
>>> isinstance(5, ModuleClass)
False

「ModuleClass」は私が発明した名前であり、実際に存在するものとその名前のようなものがある場合、ドキュメントで見つけることができません。

そもそもそんなクラスあるの?私が見逃したドキュメントのどこかにありますか?

そうでない場合、オブジェクトがモジュールかどうかを確認する別の方法はありますか? 実装に依存しない場合はさらに優れています。

(私は Python 2.7 を使用していますが、3.x に新しい解決策があるかどうかを知ることも興味深いと思います。)

hasattr(obj, '__package__')( PEP 366 ) はその場しのぎの可能性があるように思えますが、AFAICT では、将来の更新が__package__他のまったく無関係なオブジェクトに入れられないと確信する特別な理由はありません。もう少し堅牢なソリューションを好むでしょう。

4

2 に答える 2