2017-08-14 23 views
-2

私はパッケージを簡素化しようとしています(requestsモジュールのように)。モジュール間/グローバル変数を__init__.pyから定義してください

このため、私は__init__.pyを使用することをお勧めします。ユーザーが自分のパッケージをインポートすると、__init__.pyが呼び出されます。次に、私は特定のモジュールからオブジェクトをインポートする内部に少しのコードを追加します。

私のパッケージとクラスオブジェクトの両方が同じ名前を持っていることを、想像してください、しかし新しいインスタンスを

<class 'packagename.index.packagename'> # "packagename" in the beginning is my package, "packagename" in the end is class object

:パッケージがインポートされるたびに

# __init__.py 
from index import packagename # This is class object 
myclass = myclass # This is just example to be substituted, I know it has no effect 
print(myclass) 

、PythonはMyClassのの種類を記録しますクラスに設定されていません:

<module 'packagename' from 'packagename/__init__.pyc'>

それは、ユーザが使用できるように3210(私が何かを逃した場合の謝罪)私はまだ私の質問のための任意の大幅信頼できる答えを見つけることができませんでした私の研究から

は、しかし、短期では、どのように私は__init__.pyから変数を定義することができますか?

ユーザがpackagenameをインポートするたびに、変数packagenameはモジュールではなくクラスオブジェクトのインスタンスになります。

ありがとうございます!

+0

'myclass = myclass' - あなたは何をすることを期待していましたか? – user2357112

+0

@ user2357112私はそれから何も期待しませんでした、変数の定義が不適切な(ここでは意味がない)私の例を追加しました。私は '__init __。py'からのインポートを期待していました... – ShellRox

+1

あなたがここでやりたいことは本当に明確ではありません。 'myclass'を' __init __。py'にインポートすると 'from package.index import myclass'ではなく' from package import myclass'を実行できます。それ以外に何を望んでいますか? –

答えて

0

これを見つけました。私が行ったように

requestsパッケージには、これらの機能がすぐに__init__.pyから輸入され、単一の例を同じ技術を使用しています。

from .api import request, get, head, post, patch, put, delete, options

ただし、この機能は、パッケージから内側のみインポートされ、そこで、彼らはまだすべきパッケージから呼び出すこと:

requests.post

だから、私の場合、パッケージとクラスのオブジェクトに同一のnを持っていますames、しかし、残念ながら、私は彼らがきちんとした方法でお互いを交換することはできないと思います。

私のパッケージがアップルと呼ばれていて、クラスオブジェクトがindex.pyモジュール内にあるとした場合、アップルとも呼ばれました。 (Appleは[0]パッケージの名前で、Appleは、[1]クラスのオブジェクトの名前です)

Apple.Apple

:私は __init__.pyからAppleのクラスオブジェクトをインポートした場合は

、私はこのようにそれを呼び出します

関連する問題