2013年8月18日日曜日

Pythonで同名のファイルと同名のディレクトリがあった場合、どちらが優先されるのか

Pythonのfromやimportは指定した名前のディレクトリとファイルのどちらも読み込むことができるので、どちらが優先されるのかを調べました。 名前を指定するときに拡張子を書かないので重複させることができてしまいます。このような構成を用意しました。
% tree
.
├── hoge
│   └── __init__.py
├── hoge.py
└── main.py
main.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from hoge import Hoge

def main():
    Hoge()

if __name__ == '__main__':
    main()
hoge.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Hoge(object):
    def __init__(self):
        print('A')
hoge/__init__.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Hoge(object):
    def __init__(self):
        print('B')
実行します。
% python main.py
B
hoge/__init__.pyが優先されました。
Python2.7と3.3で試しましたが、結果は同じでした。

0 件のコメント:

コメントを投稿