ARMtech

Python入門:コンストラクタとデストラクタ

コンストラクタ

クラス内で、インスタンス化のときに呼び出されるメソッドのことをコンコトラクタといいます。

コンストラクタの定義
class クラス名 :
        def __init__(引数) :
             コンストラクタの処理

Pythonでは、クラス内に__init __メソッドを定義するとコンストラクタになります。

class Example :

text = ""

def __init__(self,text) :

self.text = text

#クラス名(引数)でコンストラクタを呼び出す

example = Example("例えば...")

print(example.text)

実行結果

例えば...

コンストラクタは、インスタンス化と同時にフィールドに初期値を代入したいときによく使われます。

デストラクタ

Pythonでは、インスタンスを消すことができます。

インスタンスの消し方
del インスタンス名

また、インスタンスが消されるときに呼び出されるメソッドのことをデストラクタといいます。

デストラクタの定義
class クラス名 :
        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

実行結果

例えば...
テキスト:例えば...を消去します。

練習問題

では、これまでの内容をもとに次のプログラムを作ってみましょう!
以下の条件を満たすクラスを作成する。

  1. 犬を再現したDogという名前のクラス
  2. コンストラクタで犬の名前を引数で指定する。もし、指定しなかったときは"無名の犬"とする。
  3. 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の基本的な構文を学習することが出来ますのでぜひ立ち寄ってみてください!

<   >
© 2024 ARMtech