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歳、柴犬です。 ```