【Python】クラスのデータ属性やメソッドを利用する

【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()

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です