Python 3.12では、型ヒントに新たな機能が追加されました。特に、PEP 695: 型パラメータ文法は、今後のPythonで広く使われることになるでしょう。
Python3.12のジェネリックス
Python3.12では、ジェネリックスを使った型ヒントの書き方に大きな変化がありました。これまで、Pythonの型ヒントはあくまで補助的な機能と位置づけられており、Python3.0で追加されたPEP 3107:関数アノテーションで型ヒントが書けるようになってから、型ヒントを記述するための文法はあまり追加されていませんでした。
しかし、PEP 695: 型パラメータ文法では、Python3.0以来、十数年ぶりに型ヒント用の文法が大きく追加されることになりました。
def get_first[T](L: list[T])->T:
return L[0]
int_list = [0, 1, 2, 3] # int_listの型は list[int]
first:int = get_first(int_list) # firstの値は0
この新しい記法を利用すれば、TypeVarの定義なしで、直接ジェネリックスを記述できるようになりました。
ジェネリッククラス
Python3.12では、ジェネリッククラスも新しい記法で書けるようになりました。
class Stack[T]:
_list: list[T]
def __init__(self):
self._list = []
def push(self, v:T)->None:
self._list.append(v)
def pop(self)->T:
return self._list.pop()
この新しい記法を利用すれば、TypeVarとGenericを使わずに、ジェネリッククラスを定義できるようになりました。
以上、Python 3.12の新機能、PEP 695: 型パラメータ文法についての解説でした。この新機能により、Pythonの型ヒントはより強力で使いやすくなり、Pythonのコードはより安全で読みやすくなるでしょう。