pythonはオブジェクト指向言語です。そこで今回はオブジェクト指向を簡単に勉強していきます。
クラスの一番簡単な例
まずはともあれ、クラスの一番簡単な構文を見てみましょう。
#クラスの定義
class Test:
print('テスト1')
test = Test() #インスタンスを生成
これがクラスの書き方です。関数にも似ていますが、クラスは大きなコードを書くときに便利になっていきますので、まずはこんなことができるということで見てみました。
クラスに関連する言葉
ここでクラスを勉強していくといくつかの言葉が出てきますので、すごーく簡単に理解してみます。
オブジェト指向とは
オブジェクト=「もの」という意味。
処理をオブジェクトとしてまとめておき、オブジェクトを取り出すことで処理を行っていくこと。
クラスとは
「クラス」=「オブジェクト」
処理をひな形として書いておく。
メソットとは
「クラス」の関数。
インスタンス化とは
データを格納すること。
コンストラクタとは
インスタンス化されたときに最初に呼ばれる特別なメソッド。
データの初期化の処理を書いたりすることが一般的。
メソットを使ってみる
メソットを使ってみます。メソットはクラスの関数でした。メソットでは引数に”self”と書きます。決まりだと思って覚えてしまいましょう。
#クラスの定義
class Test:
print('テスト1')
#メソットの設定
def test_print(self):
print('テスト2')
test = Test() #インスタンス生成
test.test_print() #メソッド呼び出し
インスタンス化してみる
データを格納することがインスタンス化でした。3つのデータ(data1,data2,data3)を格納して出力してみましょう。
#クラスの定義
class Test:
a = 0
b = 0
#メソットの設定
def sum(self):
return self.a + self.b
#メソットの設定 引数a,bをセット
def set(self, a, b):
self.a = a
self.b = b
#data1をインスタンス化して出力
data1 = Test()
data1.set(1, 2) #setメソットを読んで引数をセットする
print(data1.sum()) #sumメソットを実行してprintする
#data2をインスタンス化して出力
data2 = Test()
data2.set(10, 20) #setメソットを読んで引数をセットする
print(data2.sum()) #sumメソットを実行してprintする
#data1をインスタンス化して出力
data3 = Test() #インスタンス生成
data3.set(100, 200) #setメソットを読んで引数をセットする
print(data3.sum()) #sumメソットを実行してprintする
これがインスタンス化です。self.a self.bのことをインスタンス変数と呼びます。これによりdata1,data2,data3それぞれが異なる変数を持つことができました。
コンストラクタ
最後にコンストラクタです。コンストラクタとはクラスの中の変数を初期化するものでした。実は以下のコードを実行するとプログラムがエラーを起こしてしまいます。なぜならば引数をセットしていないからです。
class Test:
"""
#コンストラクタ
def __init__(self):
self.a = 0
self.b = 0
"""
#メソットの設定
def sum(self):
return self.a + self.b
#メソットの設定 引数a,bをセット
def set(self, a, b):
self.a = a
self.b = b
#data1をインスタンス化して出力
data1 = Test()#インスタンス生成
#data1.set(100, 200) #これはわざとコメントにして実行しない→エラーがおきる
print(data1.sum()) #sumメソットを実行してprintする
そこでデータがセットされない場合も正常にプログラムを終わらせるためにコンストラクタによってデータを初期化しておきます。self.aとself.bを毎回初期化することができます。
構文は以下のように書きます。コンストラクタはこのように書かく決まりだと思ったほうが良いです。
def __init__(self):
プログラム例です。
#クラスの定義
class Test:
#コンストラクタ
def __init__(self):
self.a = 0
self.b = 0
#メソットの設定
def sum(self):
return self.a + self.b
#メソットの設定 引数a,bをセット
def set(self, a, b):
self.a = a
self.b = b
#data1をインスタンス化して出力
data1 = Test()
#data1.set(100, 200) #これはわざとコメントにして実行しない→エラーがおきなくなった
print(data1.sum()) #sumメソットを実行してprintする
まとめ
今回はオブジェクト指向、そしてクラスの基本的なことを勉強しました。より詳しいことが知りたくなったら、他の参考書を勉強してみてください。