【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歳