Python 3.11では、Self
型が導入されました。この新機能は、メソッドが自分自身のクラスのインスタンスを返す場合に、そのメソッドの戻り値の型を注釈するために使用します。
from typing import Self
class Shape:
def set_scale(self, scale: float) -> Self:
self.scale = scale
return self
上記の例では、set_scale
メソッドはShape
クラスのインスタンスを返します。このメソッドの戻り値の型を注釈するために、Self
型が使用されています。
Self
型は、TypeVar
を使用したアプローチと同じ振る舞いをしますが、より簡潔で追いやすいです。これは、特にクラスメソッドや継承とメソッドチェーンを使用する際に役立ちます。
しかし、Self
型を使用するときには注意が必要です。Self
型は、クラスのメソッドが自分自身のクラスのインスタンスを返す場合にのみ使用できます。また、Self
型はサブスクリプト可能ではないため、typing.NoReturn
と同様の実装になります。
以上がPythonのSelf
型の基本的な使い方とその利点です。この新機能を活用して、Pythonコードの可読性と保守性を向上させましょう。