numpy \ __ init__.pyライブラリのコードを見て、自分自身で__init__.pyを書こうとしたときに混乱します。 test.py__init__.pyで変数__all__を正しく拡張するには?
......
アプリ/
:ここ
はnumpyの\ __ init__.pyコードスニペット
__all__.extend(['__version__', 'pkgload', 'PackageLoader',
'show_config'])
__all__.extend(core.__all__)
__all__.extend(_mat.__all__)
__all__.extend(lib.__all__)
__all__.extend(['linalg', 'fft', 'random', 'ctypeslib', 'ma'])
で、私のディレクトリ構造があります。 ..... lib1 \
............ __init__.py
............ Lib1File.py
............
\ sublib1 .......... ................... __init__.py
............ .......... ... SubLib1File.py
test.pyのコードが
from lib1 import *
if __name__ == "__main__":
result1 = Lib1File.add(10, 15) # a simple function in Lib1File.py
print(result1)
result2 = Sublib1File.mul(10,15) # a simple function in Sublib1File.py
print(result2)
LIB1内のコードです\ __ init__.pyは
ですfrom . import sublib1
__all__ = ["Lib1File"]
__all__.extend(sublib1.__all__)
print(__all__) # it can print ['Lib1File', 'Sublib1File'] on console
LIB1内のコード\ sublib1 \ __ init__.pyは
__all__ = ["Sublib1File"]
あるしかし、私はtest.pyを実行したとき、私はエラーに
*ファイル "test.py"、行を得ました1、モジュールlib1からインポート。 AttributeError:私もLIB1で__all__ = ['Lib1File', 'Sublib1File']
\ __ init__.py場合に、このエラーが出るのはなぜモジュールのLIB1は、 ' 'Sublib1File'
私の質問は
何の属性をされていませんか?
1つのインポートをまだ使用している場合、どうすればよいですか?
from lib1 import *
?質問2を解決できない場合は、
__all__.extend(...)
の目的はnumpy \ __ init__にありますか?
ええ、私は気づいた。しかし、私はまだ問題を解決する方法を知らない。より具体的な変更をお願いしますか?ありがとう –