LoginSignup
0
1

More than 3 years have passed since last update.

Pythonにおけるクラス定義の仕方まとめ1(クラス定義〜コンストラクタ、デストラクタ)

Last updated at Posted at 2019-07-11

概要

メモ代わりにPythonのクラス定義関連についてまとめていきます。

クラス定義

  • 下記は単純なクラス「Car」を定義し、それをローカルで呼び出しているコードです。
  • ここでクラス内の関数「run」は「メソッド」と呼ばれます。
  • ローカル変数myclassは、クラスという定義(概念)を具現化した「オブジェクト」を代入した変数です。
  • この「オブジェクト」はたびたび「インスタンス」とも呼ばれます。
  • ややこしいのですが、とりあえずPyhtonにおいては、オブジェクト=インスタンスという考えで話を進めていきます。
  • クラス定義内の「self」とは上記のインスタンスを指しています。
classtest1.py
# クラスの定義
class Car(object):
    def run(self):
        print('run')

# インスタンスを生成し、そのオブジェクトをローカル変数へ代入 
mycar = Car()
mycar.run()

ここでクラス定義の引数「object」は書かなくてもエラーにはなりません。

classtest1.py
class Car(:

ただ一般的には書いたほうが良いとされるそうです。
ちなみに、「継承」という機能を使う際には、ここに継承元となるクラス名を記述します。

オブジェクトの初期化と破壊

  • 下記ではクラスを初期化と破壊時の処理を追加しています。
  • メソッド「__init__」はオブジェクトが生成された時,最初に呼び出され初期化処理を行う特殊な関数です。これをコンストラクタといいます。
  • メソッド「__del__」はオブジェクトが破壊された時,最初に呼び出され破壊時処理を行う特殊な関数です。これをデストラクタといいます。
  • del [オブジェクト名] と書くとオブジェクトを破壊できる。
classtest2.py
# クラスの定義
class Car(object):
    self.color
    # コンストラクタで初期化
    def __init__(self, color):
        self.color = color

    def run(self):
        print('run')

    # デストラクタで破壊時処理を設定
    def __del__(self):
        print("stop");


# インスタンスを生成し、そのオブジェクトをローカル変数へ代入
# コンストラクタが呼ばれオブジェクトが初期化される 
mycar = Car('red')

# 初期化によって設定したデータを表示
print(mycar.color)

# オブジェクトを破壊。デストラクタが呼ばれる
del mycar

  • オブジェクトが生成された際にmycarの「color」に「red」というデータが設定されます。
  • オブジェクトが破壊された際に「stop」と表示されます。

つづく

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1