MOの気になることを適当に伝えるブログ

moNote

Python

Python - クラス

投稿日:

Python での クラス とインスタンスの説明。

クラス

クラスは データ(変数)と 操作(関数)をまとめたのです。

クラスは設計図なので 通常はそのまま使いません。
クラスからインスタンスと呼ばれる実体(オブジェクト)を生成して、インスタンスの方を使います。

ここらへんは どの言語も同じ。

class myClass:
    def Hello(self):
        print("Hello")

m = myClass()    # インスタンスの生成
m.Hello()
Hello

クラス内の関数のことをメソッドといいます。そして、メソッドの1番目の引数は、慣例で self にします。呼び出す際の引数は不要です。

self を 記述しないと

class myClass:
    def Hello(): # self 未記入
        print("Hello")

m = myClass()    # ここでエラー
m.Hello()
TypeError: Hello() takes 0 positional arguments but 1 was given

「Hello関数では引数が 0 の設定なのに 1つ 引数が指定されている」と エラーがでます。

m = myClass() 

では 引数を指定していませんが、自動的に self(自分:インスタンス)が 引数として渡されているからです。

インスタンス化は 多くの言語で new を使いますが、Pythonでは 必要ないようです。インスタンスの破棄も必要ありません。自動のようです。

強制的に破棄したいなら

class myClass:
    def Hello(self):
        print("Hello")

m = myClass()    # インスタンスの生成
m.Hello()
m = None         # myClaseeの参照をやめたので、ここで破棄

でしょうか。

コンストラクタ

__init__ と言う名前のメソッド(関数)はコンストラクタと呼ばれ、インスタンス生成時に実行されます。
コンストラクタでは、初期化処理などを行います。

class myClass:
    def __init__(self):
        print("constructor")
        self.count = 10

    def countup(self):
        self.count += 1
        return self.count

m = myClass()
print(m.countup())
print(m.countup())
print(m.countup())
constructor
11
12
13

デストラクタ

__del__ という名前のメソッド(関数)は、デストラクタと呼ばれ、インスタンスが消滅する際に実行されます。

class myClass:
    def __init__(self):
        print("constructor")
        self.count = 10

    def countup(self):
        self.count += 1
        return self.count

    def __del__(self):
        print("destructor")

m = myClass()
print(m.countup())
print(m.countup())
print(m.countup())
constructor
11
12
13
destructor

-Python
-

Copyright© moNote , 2020 All Rights Reserved Powered by STINGER.