【Python】クラスとその使い方をざっくり解説
クラスとは
クラスとは、オブジェクト指向プログラミングにおける設計図のようなものです。Pythonでは、クラスを定義して、それを基にオブジェクト(インスタンス)を作成します。クラスは属性(データ)とメソッド(処理)を持ちます。
クラスの定義
Pythonではclass
キーワードを使ってクラスを定義します。基本的なクラスの定義方法を示します。
class Person: def __init__(self, name, age): self.name = name self.age = age
このクラスには、name
とage
という属性を持つコンストラクタ(__init__
メソッド)があります。
インスタンスの作成
クラスを定義したら、それを使ってオブジェクト(インスタンス)を作成できます。
p1 = Person("太郎", 30) p2 = Person("花子", 25)
こうすることで、異なるデータを持つ複数のオブジェクトを作成できます。
メソッドの種類
クラスには主に3種類のメソッドがあります。
インスタンスメソッド
通常のメソッドで、インスタンスごとに動作します。
class Person: def __init__(self, name, age): self.name = name self.age = age def greet(self): return f"こんにちは、私は{self.name}です。"
クラスメソッド
クラス全体で共有されるメソッドです。@classmethod
デコレータを使います。
class Person: population = 0 def __init__(self, name): self.name = name Person.population += 1 @classmethod def get_population(cls): return cls.population
スタティックメソッド
インスタンスやクラスを参照しないメソッドです。@staticmethod
を使います。
class Math: @staticmethod def add(x, y): return x + y
継承
既存のクラスを基に新しいクラスを作成できます。
class Animal: def __init__(self, name): self.name = name def speak(self): return "音を出す" class Dog(Animal): def speak(self): return "ワンワン"
カプセル化
データを隠蔽し、不正なアクセスを防ぐ仕組みです。
class BankAccount: def __init__(self, balance): self.__balance = balance # __ をつけてプライベート属性にする def deposit(self, amount): self.__balance += amount def get_balance(self): return self.__balance
ポリモーフィズム
異なるクラスでも同じインターフェースを持たせることができます。
class Bird: def speak(self): return "ピヨピヨ" class Cat: def speak(self): return "ニャーニャー" animals = [Bird(), Cat()] for animal in animals: print(animal.speak())
特殊メソッド
Pythonのクラスには、特定の動作をカスタマイズできる特殊メソッド(マジックメソッド)があります。
代表的な特殊メソッド
__init__
: コンストラクタ__str__
: 文字列化__len__
:len()
の挙動__getitem__
: インデックスアクセス
例: __str__ メソッド
class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f"{self.name}, {self.age}歳" p = Person("太郎", 30) print(str(p)) # 太郎, 30歳