Python 3.8から、Final
という特殊な型ヒントが導入されました。これは、型チェッカーに対して最終的な名前を示すための特殊な型ヒントです。Finalの名前は、どのスコープでも再割り当てすることができません。また、クラススコープで宣言されたFinalの名前は、サブクラスでオーバーライドすることができません。
Finalを使用すると、定数(再代入不可)を定義することができます。以下に具体的な使用例を示します。
from typing import Final
# 定数の定義
a: Final[int] = 0
# a = 1 # エラー: final name "a"に再代入できません
class ClsA:
attr_a: Final[int] # 初期化しないとエラー
class ClsB:
attr_b: Final[int]
def __init__(self, attr_b):
self.attr_b = attr_b
obj_b = ClsB(0)
# obj_b.attr_b = 1 # エラー: final attribute "attr_b"に再代入できません
このように、Finalを使用することで、定数や変更できない属性を明示的に宣言することが可能になります。これにより、コードの安全性と可読性が向上します。