答えを読んだときはまだ違和感があるので、以下のコードサンプルを試してみました。
まず、以下のファイル構造を構築してみてください。
tmpdir
|A
|__init__.py
| B.py
| C.py
ここで、Aはpackage
、、B
またははC
ですmodule
。したがって、ipythonで次のようなコードを試すと、次のようになります。
次に、サンプルコードをipythonで実行します。
In [2]: kk = __import__('A',fromlist=['B'])
In [3]: dir(kk)
Out[3]:
['B',
'__builtins__',
'__doc__',
'__file__',
'__name__',
'__package__',
'__path__']
fromlistは期待どおりに機能しているようです。しかし、で同じことをしようとすると、物事は有線になりmodule
ます。C.pyというモジュールがあり、その中にコードがあるとします。
handlers = {}
def hello():
print "hello"
test_list = []
だから今、私たちはそれに同じことをしようとします。
In [1]: ls
C.py
In [2]: kk = __import__('C')
In [3]: dir(kk)
Out[3]:
['__builtins__',
'__doc__',
'__file__',
'__name__',
'__package__',
'handlers',
'hello',
'test_list']
では、test_listをインポートしたいだけの場合、それは機能しますか?
In [1]: kk = __import__('C',fromlist=['test_list'])
In [2]: dir(kk)
Out[2]:
['__builtins__',
'__doc__',
'__file__',
'__name__',
'__package__',
'handlers',
'hello',
'test_list']
結果が示すように、module
ではなくfromlistを使用しようとすると、コンパイルされているpackage
ため、fromlistパラメーターはまったく役に立ちません。module
一度インポートすると、他のものを無視する方法はありません。