Back to Blog

Flaskの__init__.pyファイルとは何なのか?

flask

2024年7月23日

こんにちは!

今回の記事では、Flaskの__init__.pyファイルについて解説します。

よく見かけるファイルだけど、どのような仕組みでなぜこのような名前なのかを理解している方は少ないのでしょうか?

今回の記事では、__init_.pyの役割やなぜファイル名にアンダーバーが付いているのかについて解説します。

Flaskの__init__.pyファイルとは何なのか?

Flaskの__init__.pyファイルはBlueprintでモジュール分割する際によく使われます。

例えば、Blueprintを実装する際、以下のようなディレクトリ構造になります。

my_flask_app/
├── app.py
├── blueprints/
│   ├── __init__.py
│   ├── user/
│   │   ├── __init__.py
│   │   ├── views.py
│   │   └── models.py
│   └── product.py
└── templates/
    └── index.html

ここで、blueprintsディレクトリやuserディレクトリ配下に__init__.pyファイルがあります。

この__init__.pyファイルには、どのような意味があるのでしょうか?

__init__.pyファイルの最も基本的な役割は、そのディレクトリをPythonのパッケージとして認識させることです。これにより、他のモジュールからこのディレクトリ内のファイルをインポートすることが可能になります。

【関連】FlaskでBuleprintを導入する方法を解説

パッケージとしての認識

例えば、上記のディレクトリ構造で、userディレクトリをパッケージとして認識させるためには、そのディレクトリ内に__init__.pyファイルを配置する必要があります。

これにより、以下のようなインポートが可能になります。

from user.models import User

このように、他のファイルからimportする場合は、__init__.pyファイルを準備する必要があります。

アプリケーションの初期化

Flaskプロジェクトにおける__init__.pyファイルのもう一つの重要な役割は、Flaskアプリケーションのインスタンスを作成し、初期設定を行うことです。

以下は典型的な__init__.pyファイルの例です。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

この例では、Flaskインスタンスが作成され、ルートエンドポイントが設定されています。

このように、__init__.pyファイルはアプリケーションのエントリーポイントとして機能し、アプリケーション全体の設定や初期化を行います。

また、設定の読み込みも__init__.pyファイルでも行います。

なぜ__init.py__という名前なのか?

ここで、一つ疑問に思ったことがあります。

それは、なぜファイル名にアンダーバーが付いているのでしょうか?これには、理由があります。

Pythonでは、アンダーバーには特定の意味があり、いくつかの異なる使い方があります。__init__.pyにおけるアンダーバーの使い方を理解するために、アンダーバーの一般的な用途も含めて解説します。

シングルアンダーバー(_)

シングルアンダーバーは通常、以下のような使い方をします。

  • 無視する変数
  • インタープリタでの最後の値を保持

無視する変数とは、繰り返しやアンパックの際に値を無視するためのものです。以下のように記述します。

for _ in range(5):
    print("Hello")

また、_はインタープリタでの最後の値を保持します。

>>> 2 + 2
4
>>> _ * 2
8

ダブルアンダーバー(__)

ダブルアンダーバーで始まり、ダブルアンダーバーで終わる名前は、Pythonの特別なメソッドや属性を示します。これらは「マジックメソッド」とも呼ばれ、特定の動作をするためにPythonが内部で使用します。

マジックメソッドには、以下のようなものがあります。

メソッド説明
__init__クラスのインスタンスが作成される際に初期化を行うコンストラクタ
__str__オブジェクトの文字列表現を返すメソッド
__repr__オブジェクトの公式な文字列表現を返すメソッド。

__init__.pyファイルは、Pythonパッケージの初期化と管理において重要な役割を果たします。その名前は「initialize」を意味するinitから来ており、アンダーバーはPythonの特別なメソッドや属性を示すために使用されています。

まとめ

今回の記事では、FlaskやPythonで使われる__init__.pyファイルについて解説しました。

よく使うファイルですが、どのような動作をするのか分かっていない人も多いのではないのでしょうか?私自身もその一人でした。

ファイルの名前の意味などを調べてみるとアプリケーションがどのような動きをしているのか理解しやすくなります。今回の__init__.pyの役割を知ることも同様です。

今回の記事が何かのお役になれば幸いです。

ここまでお読みいただきありがとうございました。

             

Pythonの基礎から応用まで学べる
Python WebAcademy

Python WebAcademyでは、Pythonの基礎からアーキテクチャなどの応用的な内容まで幅広く学べます。また、ブラウザ上で直接Pythonコードを試すことができ、実践的なスキルを身につけることが可能です。

             Pythonの学習を始める