LoginSignup
5
1

More than 5 years have passed since last update.

pythonでパッケージが__init__.pyがなくても動いた件

Last updated at Posted at 2018-12-12

pythonで初めてパッケージの自作をしたときのメモです.
バージョンはPython 3.6.7です.

まず,parentというディレクトリを作り,そこにchildというディレクトリを作ります.
そして,そこにhello.pyというファイルを作りました.

parent/child/hello.py

def say_hello():
    return "Hello!!"

そして,childディレクトリに__init__.pyという空のファイルを作りました.

次に,parentディレクトリに戻り,
main.pyというファイルを作ります.

parent/main.py
from child import hello 

print(hello.say_hello())

結果,次のような構成となりました.

parentディレクトリ
  |
  |-- main.py
  | 
  |-- childディレクトリ
       |
       |-- hello.py
       |--__init__.py #空ファイル

parentディレクトリでmain.pyを実行すると,次のように表示されました.

$ python main.py
Hello!! 

さて,__init__.pyの意味を確かめたく,試しにこれを削除してみました.

$ cd child
child $ del __init__.py 
child $ cd .. 

そしてmain.pyを実行するとやはり,正常に表示されます.

$ python main.py
Hello!! 

参考書では__init__.pyがないと正常に動かないとあったのですが,不思議に思い,調べてみました.

すると,こちらのサイトによると,Python 3.3以降では__init__.pyはなくても動きはするということが分かりました.(初期化処理を行える点で,あったほうがいいけど)

以上,備忘録でした

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1