
【第13回】Pythonのメソッドとコンストラクタ(クラスを使いこなす)
Pythonのオブジェクト指向プログラミングでは、クラスのメソッドや**コンストラクタ(__init__メソッド)**を活用することで、より柔軟なプログラムを作成できます。
この記事では、Ubuntu環境でviを使いながら、メソッドとコンストラクタの基本について解説します。
1、インスタンスメソッド
クラスのメソッドは、self を引数として受け取り、インスタンスのデータを操作できます。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print(f"私は{self.name}です。{self.age}歳です。")
person1 = Person("太郎", 25)
person1.introduce() # 私は太郎です。25歳です。
2、クラスメソッド
クラスメソッドは、@classmethod デコレータを使って定義し、クラス全体に関する操作を行います。
class Student:
school_name = "東京学園"
@classmethod
def change_school(cls, new_name):
cls.school_name = new_name
@classmethod
def get_school_name(cls):
return cls.school_name
print(Student.get_school_name()) # 東京学園
Student.change_school("大阪学園")
print(Student.get_school_name()) # 大阪学園
3、スタティックメソッド
スタティックメソッドは @staticmethod を使い、インスタンスやクラスに依存しない処理を定義します。
class MathUtils:
@staticmethod
def add(x, y):
return x + y
print(MathUtils.add(3, 5)) # 8
4、コンストラクタの応用
__init__ メソッドを応用して、オブジェクト生成時の初期設定を行えます。
class Car:
def __init__(self, brand, model, year=2024):
self.brand = brand
self.model = model
self.year = year
def show_info(self):
print(f"車: {self.brand} {self.model}, {self.year}年モデル")
car1 = Car("Toyota", "Corolla")
car1.show_info() # 車: Toyota Corolla, 2024年モデル
まとめ
インスタンスメソッドは self を使い、インスタンスごとのデータを扱います。
クラスメソッドは @classmethod を使い、クラス全体の情報を管理します。
スタティックメソッドは @staticmethod を使い、クラスやインスタンスに依存しない処理を行います。
コンストラクタ __init__ を活用すると、オブジェクトの初期設定が可能です。
Ubuntu環境ではviエディタを使ってPythonコードを編集し、python3 ファイル名で実行できます。
メソッドとコンストラクタを活用して、クラスの機能を最大限に引き出しましょう!