Pythonでクラスを定義しインスタンス変数の操作などを行う

スポンサーリンク

Pythonでクラスを定義しインスタンス変数の操作などを行ってみます。

■今回の環境(Python)

今回のPythonは、バージョン3.9.16を用いる。(なお、Google Colaboratory(Google Colab)を使用。)

■クラスの定義

では、早速クラスを定義しインスタンス変数の操作などを行ってみますので、コードを書いていきます。

■コード

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.speed = 0

    def accelerate(self, speed_increase):
        self.speed += speed_increase

    def brake(self, speed_decrease):
        if self.speed - speed_decrease >= 0:
            self.speed -= speed_decrease
        else:
            self.speed = 0

    def display_speed(self):
        print(f"現在、 {self.speed} km/hで走行中です。")


car1 = Car("Toyota", "Corolla", 2022)
car1.display_speed()  

car1.accelerate(60)
car1.display_speed()  

car1.brake(20)
car1.display_speed()  

car1.brake(50)
car1.display_speed()

今回はCarというオブジェクトを作成するためのテンプレート(設計図)であるクラスを定義します。このクラスは、定義後、クラス内にdef文を用いて’__init__’と記述し、コンストラクタを使います。括弧内には、メソッドで渡される最初の引数,パラメータは、インスタンス(作成されたオブジェクト)自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。次に第2,第3,第4の引数,パラメータとしてそれぞれ「make」, 「model」, 「year」を設定します。なお、最初の「self(自己)」という引数,パラメータを介してそれぞれ「make」, 「model」, 「year」というクラスのインスタンス変数が初期化されます。この時にself(自己)に対してドット演算子( . )を用いて「make」, 「model」, 「year」を指定します。なお、インスタンス変数としてself.speedも定義し、その中に数値の「0」を格納します。

次にdef文を用いてaccelerateというメソッドを定義します。括弧内には、メソッドで渡される最初の引数,パラメータは、インスタンス(作成されたオブジェクト)自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。次に第2の引数,パラメータとしてspeed_increaseを設定します。このメソッドが呼び出された時の処理として、インスタンス変数であるself.speed内に累算代入演算子”+=”を用いてspeed_increaseで受けとった値を足し算し、self.speedに代入するという処理になります。

次にdef文を用いてbrakeというメソッドを定義します。括弧内には、メソッドで渡される最初の引数,パラメータは、インスタンス(作成されたオブジェクト)自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。次に第2の引数,パラメータとしてspeed_decreaseを設定します。このメソッドが呼び出された時の処理として、インスタンス変数であるself.speedからspeed_decreaseを算術演算子”-”(マイナス)を用いて演算し、if文を用いて、引いた結果が、比較演算子”>=”を使って0以上であれば、自動車の速度を更新(self.speed -= speed_decrease)。引いた結果が0未満になる場合(else節)は、自動車の速度を0に設定(self.speed = 0)という処理になります。

次にdef文を用いてdisplay_speedというメソッドを定義します。括弧内には、メソッドで渡される最初の引数,パラメータは、インスタンス(作成されたオブジェクト)自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。このメソッドが呼び出された時の処理として、print()を用いて日本語の文字列とインスタンス変数を出力するという処理になります。なお、f文字列(f-strings)を用いてPythonの文字列内で変数や式を埋め込みます。

メソッドを定義後、car1という変数を定義します。変数内にはCar()を格納します。この時に括弧内には「make」, 「model」, 「year」に渡す値を設定します。これでインスタンス化を行います。インスタンス化によりオブジェクトが作成されたことで、クラス内にアクセスできるようになりました。その後、Carクラスのインスタンスであるcar1に対して(.)ドット演算子を用いてaccelerate()、display_speed() 、brake()を呼び出してみます。

■実行・検証

このコード(セル)を保存し、Google Colaboratory上で、セルを実行してみます。

実行してみると、インスタンスであるcar1からメソッドを呼び出し速度を変更を行い、初期状態では速度は0 km/h(self.speed = 0)ですが、accelerate()で速度を増加させ、brake()で速度を減少させることができ、別のメソッドを呼び出して速度を表示させることができました。

コメント

タイトルとURLをコピーしました