Pythonでのクラスの作り方について説明します。
クラスとは
クラスは、オブジェクト指向プログラミングに必要となる考え方です。
オブジェクト指向プログラミングの考え方では、達成したい処理を役割ごとに分けて
その役割を特徴づける性質(データ)とその振る舞い(処理)を合わせて管理します。
この役割を表現するときに使われるのがクラスという考え方になります。
クラスは、この役割を表す雛形(テンプレート)となります。
雛形を作成し、そこから実態(インスタンス)を作成していきます。
そして、この役割ごとのインスタンス同士がそれぞれの役目を果たしながら、相互にやり取りすることで1つの目的・処理を実現していきます。
クラスは、以下の2要素から構成されます。
- クラスを特徴づけるデータ(属性)
- オブジェクトの振る舞い(メソッド)
クラスを定義する
クラスの基本的な形は、以下のようなものです。
class クラス名:
def __init__(self, param1, param2, ...):
self.param1 = param1
self.param2 = param2
...
def method1(self):
...
def method2(self):
...
- def __init__(self, param1, param2, …)
インスタンスが生成されるときに呼び出されるメソッドです。(コンストラクタ)
この部分に、このクラスを特徴づける属性を定義(=初期化)します。
第1引数のselfは、このクラスで定義される自身のインスタンスになり、必ず記載する必要があります。(インスタンスの生成時には、明示的に指定しません) - self.param1 = param1
クラスの属性を定義(=初期化)しています。
‘self.’をつけることで、このオブジェクトの属性であることを意味します。
‘self.’がない場合、このメソッド内でのみ有効な変数となります。 - def method1(self, …)
クラスメソッドの定義です。
__init__メソッド同様に、第1引数に必ず自身のインスタンスを指す’self’を記載します。
ここに、このオブジェクトの振る舞いを定義します。
クラスの作成例からインスタンスの作成まで
ここでは、以下のようなクラスを作成してみます。その後、そのクラスをインスタンス化していきます。
クラス化するオブジェクト 友人クラス
友人を特徴づける属性
- 苗字
- 名前
- 年齢
友人の振る舞い
- 自己紹介をする
class Friend:
def __init__(self, last_name, first_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
def Introduce_myself(self):
print('はじめまして、 私は、{} {}と申します。'.format(self.last_name, self.first_name))
friend_a = Friend('山田', '太郎', 40)
friend_b = Friend('山田', '花子', 39)
friend_a.Introduce_myself()
friend_b.Introduce_myself()
>>> はじめまして、 私は、山田 太郎と申します。
>>> はじめまして、 私は、山田 花子と申します。
インスタンスの作成方法は、
インスタンス名 = クラス名(引数)
という形になります。
ここでは、友人A(friend_a)と友人B(friend_b)に登場してもらい、自己紹介して頂きました。
同じクラスFriendから生成された2つのオブジェクトは、実態としては別物として振る舞う様子がわかります。
オブジェクトの属性やメソッドにアクセスするには、そのインスタンス名.属性名というように、
‘.’(ドット)を使ってアクセスします。
クラスの定義の中で自身の属性にアクセスする場合も同様で、この場合は、インスタンス名が、’self’になります。
コメント