0

セットアップ スクリプトを使用して最初の Python パッケージを作成したばかりですが、この動作が正常かどうか疑問に思っています。アクセスしたいクラスを含む1つのモジュールで構成されています。プロジェクトの構造は次のようになります。

.
|
+ -- __init__.py
+ -- setup.py
my_package
    |
    + __init__.py
    + my_class.py

__init__.pyは常に空です。

インストールすると、これは私が期待する動作です。

>>> import my_package
>>> my_class.MyClass()
A new object is born!

代わりに、これを行う場合にのみそれを行うことができます:

>>> from my_package import my_class
>>> my_class.MyClass()
A new object is born!

関連する場合、パッケージとクラスファイルの名前は同じです。これはパッケージデザインが悪いのでしょうか?from my_class import *を入れることで問題を回避できることがわかりましたが__init__.py、インポート名前空間にとどまっていたとしても、そのようなステートメントを使用するのは嫌いです。

4

1 に答える 1

3

import my_packageは で定義されているものをインポートするmy_package/__init__.pyため、この動作は完全に正常です。my_classそのモジュールへの参照がないため、使用できません。

パッケージデザインの良し悪しわかりませんが、インポートMyClass時に使いたい場合はmy_package、このクラスをスクリプトに移動してくださいmy_package/__init__.py

于 2013-04-22T14:48:16.747 に答える