クラス
クラスは変数と関数をひとつにまとめたものです。例えば文字列(str)や辞書(dict)もクラスの1種です。
例えば以下のように文字列を作って、そこから特定の単語の出現位置を探す処理を考えます。
code:class_sample.py
# 1つ目のインスタンスを作成
my_text = str("apple banana orange")
index = my_text.find('banana')
print(index)
# 2つ目のインスタンスを作成
my_next_text = str("lion dog cat")
index = my_next_text.find('banana')
print(index)
# 1つ目のインスタンスは2つ目のインスタンスの影響を受けない
index = my_text.find('banana')
print(index)
クラスから実体を作り出すことを インスタンス化 と呼び、作成された実体は インスタンス(instance) またはオブジェクト(object)と呼ばれます。またクラスの持つ関数のことを メソッド(method) と呼びます。
https://gyazo.com/051669a13840a21ddda74ceb9c1968ba
クラス=クッキー型、インスタンス=クッキー
例ではクラスstr を my_text = str("apple banana orange")でインスタンス化し、メソッド find() を呼び出しています。
Visual Studio Codeを使っている場合はインスタンスの後ろで「.」と入力するとそのクラスがどんなメソッドを持っているのかを確認できます(パソコンの性能、Visual Studio Code の設定によっては表示されない場合があります)。
https://gyazo.com/d49916c1b742b19f7ad74ad05c4404d1
クラスの作成
自分独自のクラスを作成することもできます。クラスを定義するときにはclassに続けてクラス名を記述します。
code:python
class クラス名:
def __init__(self):
初期化処理
def 処理1(self):
処理1の内容
def 処理2(self):
処理2の内容
Python では __init__() という名前のメソッドはクラスの初期化時に呼び出される決まりになっています。この特別なメソッドをコンストラクタ(constructor) と呼びます※。コンストラクタの中に初期化処理を書きます。
※より正確に イニシャライザ(initializer) と呼ぶこともあります。
クラスのメソッドのひとつ目の引数にはインスタンス自身を表す self を記述します。インスタンスが持つ変数にはself.変数名とすることでアクセスできます。 この変数をインスタンス変数(instance variable) と呼びます。
具体的なクラスの作成例を見てみましょう。
code: sample_calc.py
class calc:
def __init__(self, a, b):
self.a = a
self.b = b
def add(self):
return(self.a + self.b)
def sub(self):
return(self.a - self.b)
c = calc(10, 5)
print(c.add())
print(c.sub())
d = calc(2, 3)
print(d.add())
print(d.sub())
ここで作った calcクラスは与えた2つの数値の足し算、引き算を行うものです。
さらにクラスには継承という機能があり、クラスを書き換えずに後から機能追加して別のクラスを作成していくことができます。こうした機能を使ってクラスを中心にしてプログラムを書くことをオブジェクト指向プログラミング(Object Oriented Programing、OOP)と呼びます。
ここではそれぞれの言葉を知っておくだけで十分です。さらに詳しく知りたい場合はクラス (詳細版)を読んでください。