【Python】クラスのデータ属性やメソッドを利用する
クラスの定義
Pythonでは、class
キーワードを使ってクラスを定義できます。クラスはオブジェクトの設計図であり、属性やメソッドを持つことができます。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# インスタンスの作成
p = Person("Taro", 30)
print(p.name) # Taro
print(p.age) # 30
データ属性とは
データ属性は、クラスのインスタンスが保持する情報(変数)です。通常、self
を使って定義します。
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
c = Car("Toyota", "Corolla")
print(c.brand) # Toyota
print(c.model) # Corolla
メソッドとは
メソッドは、クラスのインスタンスが持つ関数のことです。通常はself
を引数にとります。
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(f"{self.name} はワンワンと鳴く!")
d = Dog("Pochi")
d.bark() # Pochi はワンワンと鳴く!
インスタンスメソッド
インスタンスメソッドは、特定のインスタンスに対して動作するメソッドです。
class Circle:
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
c = Circle(5)
print(c.area()) # 78.5
クラスメソッド
クラスメソッドは、@classmethod
デコレーターを使って定義し、クラス全体に影響を与えるメソッドです。
class Counter:
count = 0
def __init__(self):
Counter.count += 1
@classmethod
def get_count(cls):
return cls.count
c1 = Counter()
c2 = Counter()
print(Counter.get_count()) # 2
静的メソッド
静的メソッドは、@staticmethod
デコレーターを使って定義し、クラスの属性を変更しないメソッドです。
class Math:
@staticmethod
def add(x, y):
return x + y
print(Math.add(3, 5)) # 8
継承
継承を使うと、既存のクラスの機能を引き継ぎながら、新しいクラスを作成できます。
class Animal:
def speak(self):
print("何かを話す")
class Cat(Animal):
def speak(self):
print("ニャー")
c = Cat()
c.speak() # ニャー
カプセル化
カプセル化とは、クラスの内部データを外部から直接変更できないようにする仕組みです。
class BankAccount:
def __init__(self, balance):
self.__balance = balance # __ で外部からアクセス不可
def deposit(self, amount):
self.__balance += amount
def get_balance(self):
return self.__balance
account = BankAccount(1000)
account.deposit(500)
print(account.get_balance()) # 1500
ポリモーフィズム
ポリモーフィズムとは、異なるクラスでも同じメソッドを持つことで、統一的に扱える仕組みです。
class Bird:
def speak(self):
print("チュンチュン")
class Dog:
def speak(self):
print("ワンワン")
animals = [Bird(), Dog()]
for animal in animals:
animal.speak()