Pythonのクラス定義では、特別なキーワードとしてselfが使用されます。このキーワードは、クラスのインスタンス自体を参照するために使用されます。

例えば、以下のようなクラスを考えてみましょう。

from __future__ import annotations
from dataclasses import dataclass

@dataclass
class User:
    name: str
    name_in_lowercase: str
    name_in_uppercase: str
    age: int

    @classmethod
    def create(cls, name: str, age: int ) -> User:
        return User(name=name, name_in_lowercase=name.lower(), name_in_uppercase=name.upper(), age=age)

    def print_description(self):
        print(f'name:  {self.name}\\nname_in_lowercase:  {self.name_in_lowercase}\\nname_in_uppercase:  {self.name_in_uppercase}\\nage:  {self.age}')

def main():
    user = User.create(name="John Titor", age=36)
    user.print_description()

if __name__ == "__main__":
    main()

このコードでは、Userクラスが定義されており、その中にcreateというクラスメソッドがあります。このメソッドは、新しいUserインスタンスを作成し、そのインスタンスを返します。このとき、返り値の型としてUserを指定していますが、これはselfの一種と考えることができます。

また、print_descriptionというメソッドでは、selfを使用してインスタンスの属性にアクセスしています。これにより、各インスタンスは自身の状態を知ることができます。

このように、Pythonのクラスと自己参照は、オブジェクト指向プログラミングにおいて重要な概念です。クラスはオブジェクトの設計図であり、インスタンスはその設計に基づいて作成された実際のオブジェクトです。そして、selfはそのインスタンス自体を指す特殊な引数であり、クラス内で定義されたメソッドは、そのメソッドを呼び出すオブジェクト自身への参照を第一引数として取ります。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です