classの概要
クラスの定義とオブジェクト指向の構築 Python予約語 | ||
class クラス名: 概要 わかりやすく説明 クラスは「設計図」のようなもので、そこから「実体(オブジェクト)」を作ることができます。たとえば、「犬」というクラスを作り、それをもとに「柴犬」や「ポメラニアン」といったオブジェクトを作ることができます。 |
||
|
classの基本的な使い方
以下の例では、簡単なクラスを定義し、そのオブジェクトを作成しています。
# クラスの基本
class Dog:
def __init__(self, name, breed):
self.name = name # 名前
self.breed = breed # 犬種
def bark(self):
print(f"{self.name}({self.breed})がワンと鳴きます!")
# オブジェクトの作成
dog1 = Dog("ポチ", "柴犬")
dog1.bark()
class Dog
でクラスを定義しています。__init__
メソッドで、オブジェクトの初期設定を行います。dog1 = Dog("ポチ", "柴犬")
で、オブジェクトを作成し、メソッドbark()
を実行しています。
クラスの継承
クラスを継承すると、元のクラス(親クラス)の機能を引き継いで新しいクラス(子クラス)を作ることができます。
# クラスの継承
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name}は音を出します。")
class Dog(Animal):
def speak(self):
print(f"{self.name}はワンワンと鳴きます!")
dog = Dog("ポチ")
dog.speak()
class Dog(Animal)
で、Animal
クラスを継承しています。- 親クラスの
__init__
を利用しつつ、speak()
メソッドを上書き(オーバーライド)しています。
クラスのメソッドとクラス変数
クラスにはインスタンス変数(オブジェクトごとに異なる値)とクラス変数(クラス全体で共有する値)があります。
# クラス変数の使用
class Cat:
species = "猫" # クラス変数(すべてのオブジェクトで共通)
def __init__(self, name):
self.name = name # インスタンス変数(オブジェクトごとに異なる)
cat1 = Cat("ミケ")
cat2 = Cat("タマ")
print(cat1.name, cat1.species) # ミケ 猫
print(cat2.name, cat2.species) # タマ 猫
species
はクラス変数で、すべてのインスタンスで共通の値を持ちます。self.name
はインスタンス変数で、オブジェクトごとに異なります。
classの注意点
- クラスの命名: クラス名は
PascalCase
(例:MyClass
)で書くのが一般的です。 - クラスの継承: 継承を活用することで、コードを再利用しやすくなります。
- クラス変数とインスタンス変数の違い: クラス変数は全インスタンスで共有されますが、インスタンス変数は個別に管理されます。
classのよくある質問
- Q: クラスとインスタンスの違いは何ですか?
- A: クラスは「設計図」であり、インスタンスはその設計に基づいて作られた「実体」です。
- Q:
self
は必ず必要ですか? - A: はい。
self
はインスタンス自身を指し、クラス内のメソッドでインスタンス変数にアクセスするために必要です。 - Q: クラス変数はどう使うのが良いですか?
- A: クラス全体で共通の値を管理する場合に使用すると便利です(例:
species = "猫"
)。
まとめ
class
はPythonのオブジェクト指向プログラミングにおいて重要な概念です。適切に活用することで、コードの再利用性や可読性を向上させることができます。
- クラスを定義することで、データと処理をまとめて扱えます。
- クラスを継承することで、既存の機能を活用できます。
- インスタンス変数とクラス変数の使い分けを理解しましょう。
適切にクラスを活用し、Pythonのオブジェクト指向プログラミングを習得しましょう!