理系母の趣味はプログラミング

理系院卒、メーカー技術職の二児の母が、PythonやVBAで色々と作ってアップしていくブログです。

【18日目】オブジェクト指向プログラミング②メソッドを追加する

こんばんは、なぺです。
昨日からオブジェクト指向の理解に心折れかけています。
今日も苦しいですが、よろしくお願いします。

さて、前回はクラスを定義し、__init__という特殊メソッドを使ってオブジェクト(インスタンス)を生成しました。
今回は、メソッドを追加で定義する方法を学びます。

長方形を表すクラスを生成してみます。

class Rectangle():
    def __init__(self, w, l):
        self.width = w
        self.len = l

rectangle = Rectangle(10, 20)
print(rectangle.width)
print(rectangle.len)

#出力結果
10
20

幅10、長さ20の長方形(rectangleオブジェクト)ができました。

では、長方形の面積を返すメソッドを追加します。
面積をリターンさせます。

class Rectangle():
    def __init__(self, w, l):
        self.width = w
        self.len = l

    def area(self): #メソッドを追加
        return self.width * self.len  #面積をリターンさせる

rectangle = Rectangle(10, 20)
print(rectangle.area())
#出力結果
200

rectangleオブジェクトを作った際に、self.widthとself.lenにはそれぞれ値が格納させているため、self.width * self.len をreturnさせることで面積が計算できます。
追加したメソッドは、オブジェクト名.メソッド名()で呼び出すことができます。

次に、長方形のサイズを変更するメソッドを追加します。
インスタンス変数wとlを更新するということ。

class Rectangle():
    def __init__(self, w, l):
        self.width = w
        self.len = l

    def area(self):
        return self.width * self.len

    def change_size(self, w, l):  #サイズ変更のメソッドを追加
        self.width = w #wを更新
        self.len = l #lを更新

rectangle = Rectangle(10, 20)
rectangle.change_size(20, 40) 
print(rectangle.width)
print(rectangle.len)

#出力結果
20
40

できました!

手の込んだプログラムを書く時には、このオブジェクト指向プログラミングというやり方が良いみたいですが、まだ「ふーん」レベルです。
後ほどそれが実感できるといいな(笑)

今日は以上です。

参考書はこちらです。


それではまた^^