Python入門:コンストラクタとデストラクタ
コンストラクタ
クラス内で、インスタンス化のときに呼び出されるメソッドのことをコンコトラクタといいます。
def __init__(引数) :
コンストラクタの処理
Pythonでは、クラス内に__init __メソッドを定義するとコンストラクタになります。
class Example :
text = ""
def __init__(self,text) :
self.text = text
#クラス名(引数)でコンストラクタを呼び出す
example = Example("例えば...")
print(example.text)
例えば...
コンストラクタは、インスタンス化と同時にフィールドに初期値を代入したいときによく使われます。
デストラクタ
Pythonでは、インスタンスを消すことができます。
また、インスタンスが消されるときに呼び出されるメソッドのことをデストラクタといいます。
def __del__(引数) :
デストラクタの処理
Pythonでは、クラス内に__del__メソッドを定義するとデストラクタになります。
class Example :
text = ""
def __init__(self,text) :
self.text = text
def __del__(self) :
print(f"テキスト:{self.text}を消去します。")
#クラス名(引数)でコンストラクタを呼び出す
example = Example("例えば...")
print(example.text)
#del インスタンス名でインスタンスを消去
del example
例えば...
テキスト:例えば...を消去します。
練習問題
では、これまでの内容をもとに次のプログラムを作ってみましょう!
以下の条件を満たすクラスを作成する。
- 犬を再現したDogという名前のクラス
- コンストラクタで犬の名前を引数で指定する。もし、指定しなかったときは"無名の犬"とする。
- oldメソッドを呼び出すごとに歳をとり、10歳で亡なる(デストラクトする)。
解答例※あくまで一例です。
(1)
#Dogクラス
class Dog :
name = "無名の犬"
age = 0
def __init__(self,name):
self.name=name
def __del__(self):
print(f"{self.name}は{self.age}歳であの世へ旅立った")
def old(self):
self.age += 1
if self.age < 10:
print(f"{self.name}は{self.age}歳になった")
else :
#del selfで自身のクラスを消去できます。
del self
name = input("犬の名前を入力してください>>")
dog = Dog(name)
for r in range(10) :
dog.old()
犬の名前を入力してください>>チャーリー
チャーリーは1歳になった
チャーリーは2歳になった
チャーリーは3歳になった
チャーリーは4歳になった
チャーリーは5歳になった
チャーリーは6歳になった
チャーリーは7歳になった
チャーリーは8歳になった
チャーリーは9歳になった
チャーリーは10歳であの世へ旅立った
最後に
この記事では、Pythonでのコンストラクタ、デストラクタについて解説しました。
もっとPythonを学びたい!という方はこちらの記事でPythonの基本的な構文を学習することが出来ますのでぜひ立ち寄ってみてください!