Python

【Python】第5章第3回:メソッドと属性の定義

本記事では、Pythonのクラス内で定義される「メソッド」と「属性」について詳しく解説します。これらを効果的に使いこなすことで、オブジェクト指向プログラミングの理解が深まります。

0. 記事の概要

この記事を読むメリット

  • メソッドと属性の基礎理解:クラス内での役割を学べます。
  • コード設計力の向上:オブジェクトの振る舞いを明確に定義できるようになります。
  • 応用スキルの習得:実践的なプログラムに適用できる知識を得られます。

この記事で学べること

  • クラス内のメソッドと属性の基本的な定義方法
  • メソッドの種類と役割
  • カスタムクラスの作成と活用方法

1. メソッドと属性の基本

1.1 属性とは?

属性とは、クラスやインスタンスに関連付けられた変数のことです。オブジェクトごとに異なる値を保持するために使用されます。

1.2 メソッドとは?

メソッドは、クラス内で定義された関数のことを指し、オブジェクトがどのように動作するかを定義します。

1.3 属性とメソッドの役割

  • 属性:オブジェクトの状態を表す
  • メソッド:オブジェクトの振る舞いを定義する

2. メソッドの種類

2.1 インスタンスメソッド

インスタンスメソッドは、インスタンスごとに異なる動作を定義するために使用されます。selfを引数に取ります。

# インスタンスメソッドの例
class Person:
    def __init__(self, name):
        self.name = name

    def greet(self):
        print(f"こんにちは、私は{self.name}です。")

2.2 クラスメソッド

クラスメソッドは、クラス全体に関連する動作を定義します。@classmethodデコレータを使用し、clsを引数に取ります。

# クラスメソッドの例
class Person:
    count = 0

    @classmethod
    def increment_count(cls):
        cls.count += 1
        print(f"現在の人数は{cls.count}人です。")

2.3 静的メソッド

静的メソッドは、クラスやインスタンスに依存しない動作を定義します。@staticmethodデコレータを使用します。

# 静的メソッドの例
class Math:
    @staticmethod
    def add(a, b):
        return a + b

3. メソッドと属性の活用例

3.1 カスタムクラスの実装例

# シンプルなカスタムクラス
class Car:
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model

    def describe(self):
        print(f"この車は{self.brand}の{self.model}です。")
動作解説
  1. __init__メソッドでインスタンス属性brandmodelを初期化します。
  2. describeメソッドでインスタンスの情報を出力します。

4. 練習問題

以下の課題に挑戦してみましょう。

  1. 「Student」というクラスを作成し、名前と年齢を属性として持たせてください。
  2. クラスにintroduceメソッドを追加し、学生の情報を出力してください。

5. 練習問題の解答と解説

問1の解答例

# Studentクラスの例
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

問2の解答例

# introduceメソッドを追加
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print(f"私は{self.name}、{self.age}歳です。")

6. まとめ

メソッドと属性を理解することで、より高度で直感的なクラス設計が可能になります。練習問題を解いて、基本をしっかり固めましょう。