クラス定義の方法
pythonはオブジェクト指向言語であり、クラスを定義して属性(プロパティ)とメソッドを持っている。
クラスとは、オブジェクトを作成するための雛形である。
実際にpythonでクラスでプロパティを定義する場合には、以下のように記述しアクセスできる。
- クラスとプロパティの定義
value=5
- インスタンス作成して、プロパティにアクセス
print(s.value) # 5と表示(プロパティにアクセス)
- クラスを定義するが中に記述しない場合passとする
pass
プロパティの変更と削除
クラスからインスタンスを作成して、プロパティにアクセスし、値を変更することができる。
- クラスとプロパティの定義
value=5
- インスタンス作成して、プロパティの値を変更
s.value = 6 # 値を5から6に変更
print(s.value) # 6と表示
- プロパティを削除
del s # インスタンスs削除
メソッドの作成と実行
次にメソッドを定義する方法とそれを実行する方法について記述する
メソッドとはクラスの中に記述する関数で、プロパティへのアクセスも含んだ一連の処理をまとめたものである。
- クラスとメソッドの定義
value = 20 # プロパティ
def print_word(self, str): # メソッドの定義、第1引数はselfとする
print(str)
def print_value(self):
print(self.value) # self.valueとして、valueを参照する
p1= PrintClass()
p1.print_word("Hello")
# print_classのprint_wordメソッドを呼び出す。
引数selfにはインスタンス自身(p1)が入り、引数strには"Hello"を渡して実行される
p1.print_value() # print(self.value)が実行され、20が表示される
a.value = 50 # valueの値を変更
a.print_value() # print(self.value)の結果、50が表示される
コンストラクト(__init__)の定義
クラスを作成すると、まずコンストラクタを定義するのが一般的である。
コンストラクタは、インスタンス作成時に呼び出される特殊メソッドで、プロパティの初期化などを行う
- コンストラクタ(__init__)の定義
def __init__(self, name, age): # コンストラクタ
self.name = name
self.age = age
p1= Person("Taro", 20) # __init__が呼び出され、nameとageがTaro, 20で初期化される
print(p1.name) # Taro
print(p1.age) # 20
selfというパラメータは何なのか?
ここまで登場してきたメソッドの第一引数selfというパラメータは、現在のインスタンスへの参照を表す。
クラスのプロパティやメソッドにアクセスする際に用いる。
- クラスとselfの意味
def __init__(self, name, age): # 第1引数のselfはインスタンスへの参照
self.name = name インスタンスのnameに引数nameを設定
self.age = age
def print_name(self):
print(self.name) # インスタンスのnameにアクセス
p1= Person("Taro", 20) # __init__が呼び出される(selfにp1、nameにTaro、ageに20を設定して実行)
print(p1.name) # Taro
print(p1.age) # 20
p1.print_name() # Taroと表示される