• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

Code.AI

生成AI時代のエンジニアの生き方を考える

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Python / Pythonのコンストラクタ(__init__)、デストラクタ(__del__)、__new__について詳細

Pythonのコンストラクタ(__init__)、デストラクタ(__del__)、__new__について詳細

1 コンストラクタ(__init__)の利用方法
2 デストラクタ(__del__)の利用方法
3 __new__の利用方法
4 関連記事

コンストラクタ(__init__)の利用方法

以下の流れで、クラスからインスタンスは作成される。

オブジェクトを初期化する際に呼び出されるメソッドをコンストラクタと言い、pythonの場合__init__というメソッドが呼び出される。

例えば、クラスのプロパティの初期化の際に用いられる。

  • コンストラクタの定義
class SampleClass:
    def __init__(self, msg): # コンストラクタ
        print("コンストラクタが呼び出されました")
        self.msg = msg # プロパティmsgを引数msgで初期化
        self.msg2 = "Message" # 初期値を設定

    def print_msg(self):
        print(self.msg) # プロパティmsgを表示

sample = SampleClass("Hello World")
# インスタンス作成時にコンストラクタ__init__を実行
# "コンストラクタが呼び出されました"と表示後、msgに"Hello World", msg2に"Message"を格納

sample.print_msg()
# インスタンスsampleのprint_msgメソッドを実行。プロパティmsgは"Hello World"なので、print(self.msg)で"Hello World"と表示

デストラクタ(__del__)の利用方法

デストラクタはオブジェクトが削除される際に呼び出されるメソッドである。
pythonでは、__del__として定義をする。


def __del__(self):
pass

  • コンストラクタの定義
class DelSample:
    def __del__(self):
        print("delが呼び出されました。")

del1 = DelSample()
del del1
# del インスタン名とすると、インスタンスが削除され__del__が呼び出さる。"delが呼び出されました。"が表示

__new__の利用方法

__new__は、特殊メソッドの1つで、オブジェクト作成時に呼び出されるメソッドである。
__new__は、スタティックメソッドで、clsを第1引数にしてclassの初期化のために利用される。

  • __new__の定義方法(newで自身のインスタンスを返すようにするとその後、そのコンストラクタを呼び出す)
class MyClass:
    def __new__(cls):
        print("new is called")
        return super().__new__(cls) # 親クラスの__new__を呼び出して、返り値をreturnする

    def __init__(self): # __new__の後に呼ばれる
        print("Init is called")

MyClass() # new is called → Init is calledと表示される

  • __new__の定義方法(newでインスタンスを返すようにするとその後、そのインスタンスのコンストラクタを呼び出す)
class MyClass:
    def __new__(cls):
        print("new is called")
        return 'msg' # 文字列を返す。__init__はそのあと呼び出されない

    def __init__(self): # 実行されない
        self.name='A'
        print("Init is called")

MyClass() # new is calledと表示

関連記事

Pythonの型ヒント:コレクション型とOptional型の使い方
Pythonの型ヒント:コレクション型とOptional型の…
Python型ヒントについて、変数と関数の引数と戻り値に付与する基本的な書き方について
Python型ヒントについて、変数と関数の引数と戻り値に付与…
【まとめ】よく使うLinuxのショートカット11選
【まとめ】よく使うLinuxのショートカット11選
覚えておくべきLinuxコマンド50選
覚えておくべきLinuxコマンド50選
FlaskでFormを用いてPOSTリクエストを行い、送信された値を取得する
FlaskでFormを用いてPOSTリクエストを行い、送信さ…
Flaskでabortを用いてHTTPException例外を強制的に発生させる
Flaskでabortを用いてHTTPException例外…

Filed Under: Python, プログラミング

Primary Sidebar

人気記事

  • 1
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 2
    Python未経験だが、フリーランスの案件に採用さ…
  • 3
    PyCharm,IntelliJのおすすめプラグイン一覧
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 コンストラクタ(__init__)の利用方法
2 デストラクタ(__del__)の利用方法
3 __new__の利用方法
4 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Python講座
【Udemy】Python入門講座(0からPythonの基礎を体系的に学んで、生成AIでバイブコーディング)
受講生3000人ほどの人気講座。<strong>Pythonの基礎から生成AI活用</strong>...
詳細 ▶

Footer

利用規約