はてな
クラスとは何でしょうか?
もっと詳しく
クラスは処理とデータを定義した設計図のような役割を持っていて、クラスを使うためにはクラスを実体化させる必要があります。
そして、クラスを実体化したものをインスタンスといいます。
メモ
よく使われるたとえは、クラスが「たい焼きの金型」で、インスタンスは「たい焼き」です。
クラスの使い方
クラスを作成する
クラスを作成するには、classキーワードを使います。
class クラス名:
処理
もっとも簡単なクラスは、以下のようになります。
処理にpass文を書くことで、何もしないクラスが作成されます。
1 2 |
class Class1: pass |
メモ
クラス名の先頭は慣習的に大文字で始めます。
インスタンスを生成する
クラスを使うためにクラスを実体化させます。
クラスを実体化させることを、インスタンスを生成するといいます。
インスタンスを生成するには、以下のようにします。
インスタンス名 = クラス名()
変数を定義する
クラス内で使う変数には、クラス変数とインスタンス変数の2種類があります。
クラス変数はクラスを定義した段階で値が設定されるのに対して、インスタンス変数はインスタンスを生成した段階で値が設定されます。
クラス変数を定義する
クラス変数の定義は、以下のようになります。
class クラス名:
クラス変数名 = 値
クラス変数を参照するには、以下のようにします。
インスタンス名.クラス変数名
クラス変数は、インスタンス生成後に変更することができます。
インスタンス名.クラス変数名 = 値
クラス変数を使ったPythonスクリプトは、以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
### クラス定義 class Class2: #### クラス変数定義 val1 = 100 val2 = 200 ### インスタンス生成 obj1 = Class2() ### クラス変数表示 print(obj1.val1) print(obj1.val2) ### クラス変数変更 obj1.val1 = 300 ### クラス変数表示 print(obj1.val1) |
実行例
> python class2.py
100
200
300
インスタンス変数を定義する
インスタンス変数を定義するには、初期化メソッド「__init__()」を使います。
インスタンス変数の定義は、以下のようになります。
メモ
初期化メソッドのことを、コンストラクター(constructor)ともいいます。
class クラス名:
def __init__(self, 引数2, 引数3, …):
self.インスタンス変数名1 = 引数2
self.インスタンス変数名2 = 引数3
:
インスタンス変数を使ったPythonスクリプトは、以下のようになります。
インスタンスを生成する時に、インスタンス変数の値を引数に渡しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
### クラス定義 class Class3: ### 初期化 def __init__(self, arg1, arg2): ### インスタンス変数定義 self.val1 = arg1 self.val2 = arg2 ### インスタンス生成 obj1 = Class3(10, 20) ### インスタンス変数表示 print(obj1.val1) print(obj1.val2) |
実行例
> python class3.py
10
20
メソッドを定義する
メソッドはクラス内で定義する関数です。
メソッドを定義するには、以下のようにします。
class クラス名:
def メソッド名(self, 引数2, 引数3, …):
処理
メソッドを使ったPythonスクリプトは、以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
### クラス定義 class Class4: ### 初期化 def __init__(self, arg1, arg2): ### インスタンス変数定義 self.val1 = arg1 self.val2 = arg2 ### メソッド定義 def func(self, arg1): return self.val1 * self.val2 * arg1 ### インスタンス生成 obj1 = Class4(10, 20) ### メソッドを呼び出し、結果を表示 print(obj1.func(30)) |
実行例
> python class4.py
6000