Pythonにおけるselfとは何か?
By datnq, at: 2022年12月19日18:57
Estimated Reading Time: __READING_TIME__ minutes


Pythonにおいて、self
はクラス定義で使用される特別なキーワードであり、クラスのインスタンスを表します。オブジェクト指向プログラミングにおいて、クラスの属性とメソッドにアクセスすることを可能にします。
私たちの中には、いくつかのコア機能を知らずに毎日これを使っている人もいます
なぜself
を使うのか?
self
パラメータは、クラスの現在のインスタンスへの参照として機能します。これにより、クラス内のメソッドはオブジェクトの属性にアクセスして変更し、他のメソッドを呼び出すことができます。
self
の主な特性:
-
クラスの現在のインスタンスを参照します。
-
インスタンスメソッドの最初の引数でなければなりません。
-
self
が慣習ですが、異なる名前にすることもできます。
self
の動作
簡単な例を以下に示します。
class Person:
def __init__(self, name, age):
self.name = name # インスタンス属性に名前を代入
self.age = age # インスタンス属性に年齢を代入
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
# Personのインスタンスを作成
person = Person("Alice", 30)
person.greet() # 出力:Hello, my name is Alice and I am 30 years old.
説明:
-
__init__
はコンストラクタと呼ばれる特別なメソッドです。
-
self.name
とself.age
はインスタンスの属性を参照します。
-
greet()
メソッドは、これらの属性にアクセスして表示するためにself
を使用します。
self
に関するよくある間違い
1. メソッド定義でself
を省略する:
def greet(): # selfが欠けている
print("Hello!")
修正:
def greet(self):
print("Hello!")
2. self
とクラス変数を混同する:
class Counter:
count = 0 # クラス変数
def __init__(self):
self.count += 1 # 正しくない使用方法
修正:クラス変数を変更するにはCounter.count
を使用します。
高度な使用方法
クラス属性へのアクセス
class Example:
class_variable = 42
def show_class_variable(self):
print(f"Class variable: {Example.class_variable}")
メソッドチェーン
class Addition:
def __init__(self):
self.data = []
def add(self, value):
self.data.append(value)
return self # メソッドチェーンを可能にする
def display(self):
print(self.data)
b = Addition()
b.add(1).add(2).add(3).display() # 出力:[1, 2, 3]
結論
self
キーワードは、Pythonのオブジェクト指向プログラミングにおいて不可欠です。クラスのインスタンスを表し、インスタンスのデータとメソッドへのアクセスを提供します。self
の使用方法を理解することで、Pythonプロジェクトで堅牢で再利用可能なコードを作成できます。