【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}です。")
動作解説
__init__
メソッドでインスタンス属性brand
とmodel
を初期化します。describe
メソッドでインスタンスの情報を出力します。
4. 練習問題
以下の課題に挑戦してみましょう。
- 「Student」というクラスを作成し、名前と年齢を属性として持たせてください。
- クラスに
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. まとめ
メソッドと属性を理解することで、より高度で直感的なクラス設計が可能になります。練習問題を解いて、基本をしっかり固めましょう。