私は次のように書くことができるようにパッケージを実装する必要があります。モジュール/パッケージ内のオブジェクトを公開する方法は?
私のモジュールをマーケットといいます。バナナとアップルは
import market as mk
B = mk.Banana(0.99)
A = mk.Apple(1.10)
A.buy()
B.buy()
です:それは、私は次のコードを書くことができるようにしたい私のgoShopping.pyでgoShopping.py
と呼ばれる私のPythonスクリプトの作業ディレクトリ内のフォルダです私のモジュールのいくつかのファイルのオブジェクト。
モジュール市場はどのように書かれますか?
modulesフォルダにfruits.pyという名前のファイルがあるとします。そこで、私はBananaとAppleのクラスを定義します。 私は次のように私は上記のコードを書くことができます知っている:
import market.fruits as mk
B = mk.Banana(0.99)
A = mk.Apple(1.10)
A.buy()
B.buy()
しかし、私はそれを望んでいません。私はこのような__init__.py
でいくつかの宣言(市場フォルダ内__init.py
)持っていることについて考えた解決策として
AttributeError: module 'market' has no attribute 'Banana'
:
from fruits import Apple,Banana.
は、しかし、私は次のエラーを取得します:
B = mk.Banana(0.99)
どのように構造化し、どのようなshou私は私が望むようにオブジェクトを公開できるように書くのですか?
私はPythonista for iOSを使用しています。これが問題なのかなと思います。
あなたが持っているものはうまくいくはずです。どのように果物をAppleから輸入し、バナナが失敗したのか - エラーメッセージは何ですか?一般に、Pythonのすべての名前は、モジュール名やパッケージ名を含めて大文字と小文字が区別されます。 PEP-8はすべての小文字を使用することをお勧めします。これは、対応するファイル/フォルダ名もそのようにする必要があることを意味します。 – martineau
@martineau質問を私のエラーメッセージで更新しました。私のクラス名だけが大文字です – zeh
'B = mk.Banana(0.99)'という行にはエラーがありますが、 '__init __。py'では' from fruits imported Apple、Banana'の行にエラーが発生するのは奇妙です。'import'行の直後に' print(Banana) 'を追加し、エラーが発生するかどうかを確認してください。 – martineau