Posted at

【Python入門】Pythonにおけるclassの使い方とは?

More than 1 year has passed since last update.

※こちらの記事は、プロスタ編集部が現在大変人気の高いPythonの文法記事を公開することで、皆様の学習にお役に立ちたい意図で投稿しております。

参考サイト:【Python入門】Pythonにおけるclassの使い方とは?

Pythonはオブジェクト指向プログラミングをサポートしている言語です。そのためにはクラスを定義、作成することが必要です。Pythonのクラス定義は他の言語と比べると簡単に行えるようになっています。

今回は、Pythonにおける基本的なクラスの扱いについて説明します。


クラスの定義

Pythonではクラスの定義にclass文を使用します。class文を使った定義の仕方は以下のようになります。

class クラス名:

class文の後にそのクラスの名前となるクラス名をつけて、最後に「:」を付け加えます。そのあとに一段落インデントを入れてクラス定義をしていきます。

class Test:

pass #何もしないクラスの場合はpassと記入する

test = Test() #インスタンスを生成


メソッド

クラスにはメソッドを定義することができます。メソッドの定義は以下のように行います。

class クラス名:

def メソッド名(self):
#メソッドの定義

メソッドは必ず1つ以上の引数を持ちます。また、引数のうち最初のものはselfという名前にすることになっています。メソッドを呼び出すには以下のようにします。

インスタンス.メソッド名()

class Test:

def test_print(self):
print('This is test')

test = Test() #インスタンス生成
test.test_print() #メソッド呼び出し

実行結果


This is test



コンストラクタとデストラクタ

メソッドの中でも、インスタンスが生成されるときに自動的に呼び出されるメソッドのことをコンストラクタと言います。コンストラクタを定義するには「init」という名前のメソッドを作成します。

class Test:

def __init__(self, 引数1, 引数2, ….):
#コンストラクタの定義

initも必ずselfという引数が必要になります。それ以外にも引数をつけることができ、その引数はインスタンスを生成する際にクラスを呼び出す時の引数が渡されます。

class Test:

def __init__(self, num):
self.num = num; #このクラスが持つ「num」変数に引数を格納

def print_num(self):
print('引数で渡された数字は{}です。'.format(self.num))

test = Test(10) #ここで渡された引数が__init__のnumに渡される
test.print_num()

実行結果


引数で渡された数字は10です。


コンストラクタとは逆に、インスタンスが不要になり削除される時に呼ばれるメソッドをデストラクタと言います。デストラクタは「del」という名前のメソッドで定義されます。

class Test:

def __init__(self):
print('コンストラクタが呼ばれました')

def __del__(self):
print('デストラクタが呼ばれました')

test = Test() #インスタンスを生成
del test #インスタンスを削除

実行結果


コンストラクタが呼ばれました

デストラクタが呼ばれました



継承

Pythonのクラスも他のクラスを継承し、拡張することができます。クラスを継承する場合はクラス文に親となるクラスを指定します。親のクラスのメソッドを呼び出す場合はsuper()を使います。

class Test:

def __init__(self, num):
self.num = num;

def print_num(self):
print('引数で渡された数字は{}です。'.format(self.num))

class Test2(Test): #Testクラスを継承
def print_test2_info(self):
print('このクラスはTestクラスを継承しています。')
super().print_num() #親クラスのprint_num()を呼び出す

test = Test2(10)
test.print_test2_info()

実行結果


このクラスはTestクラスを継承しています。

引数で渡された数字は10です。