PYTHON MEBY

Pythonでクラスを定義(class)

この記事では、Pythonにおけるクラス定義の基本を解説します。クラス、オブジェクト、メソッド、コンストラクタ、継承といった重要な概念を、初心者にも分かりやすく説明します。

目次

クラスの定義

Pythonでクラスを定義するには、`class`キーワードを使用します。クラス名は慣習的に大文字で始まります。

class Dog:
    pass

上記のコードは、`Dog`という名前の空のクラスを定義しています。`pass`は、何も処理を行わないためのプレースホルダーです。

コンストラクタ(__init__)

コンストラクタは、クラスのインスタンスが作成されるときに自動的に呼び出される特別なメソッドです。`__init__`という名前で定義します。

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

この例では、`Dog`クラスのコンストラクタは、犬の名前と年齢を受け取り、インスタンス変数`self.name`と`self.age`にそれぞれ代入しています。`self`は、インスタンス自身を表す特別な引数です。

メソッド

メソッドは、クラスに属する関数です。クラスのインスタンスを通じて呼び出されます。

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print("ワンワン!")

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

この例では、`Dog`クラスは`bark`メソッドと`introduce`メソッドを持っています。`bark`メソッドは「ワンワン!」と出力し、`introduce`メソッドは犬の名前と年齢を出力します。

属性

属性は、クラスのインスタンスに関連付けられたデータです。

my_dog = Dog("ポチ", 3)
print(my_dog.name)  # ポチ
print(my_dog.age)   # 3

上記のコードでは、`my_dog`という`Dog`クラスのインスタンスを作成し、その`name`属性と`age`属性にアクセスしています。

継承

継承は、既存のクラスを拡張して新しいクラスを作成するメカニズムです。

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        print("ワンワン!")

class Cat(Animal):
    def speak(self):
        print("ニャー")

この例では、`Dog`クラスと`Cat`クラスが`Animal`クラスを継承しています。`Dog`クラスと`Cat`クラスは、`Animal`クラスの`name`属性と`speak`メソッドを継承し、`speak`メソッドをオーバーライドしてそれぞれの動物特有の音声を出すようにしています。

サンプルコード

以下は、上記の概念を統合したサンプルコードです。

class Dog:
    def __init__(self, name, age, breed):
        self.name = name
        self.age = age
        self.breed = breed

    def bark(self):
        print("ワンワン!")

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

my_dog = Dog("ポチ", 3, "柴犬")
my_dog.bark()
my_dog.introduce()

実行結果: ``` ワンワン! 私の名前はポチです。3歳、柴犬です。 ```

関連記事