Python クラス #6
株式会社リュディアです。今回も引き続きクラスについてまとめていきます。
前回までの Python クラスについてのまとめへのリンクは以下を参考にしてください。
前回のクラスメソッドに引き続き今回は Python の 3 つのメソッドのうちインスタンスメソッドについてまとめてみます。先にまとめた変数もクラス変数とインスタンス変数がありましたね。クラスメソッドとインスタンスメソッドも同じように考えてもらえば問題ないです。さっそく例を見てみましょう。
class VegetableClass():
__num_of_types = 800
def __init__(self, c):
self.__color = c
@classmethod
def num_of_types(cls):
print('Called class method')
return cls.__num_of_types
def color(self):
print('Called instance method')
return self.__color
lettuce = VegetableClass('green')
tomato = VegetableClass('red')
print(VegetableClass.num_of_types())
print(lettuce.color())
print(tomato.color())
# Called class method
# 800
# Called instance method
# green
# Called instance method
# red
インスタンスメソッド color(self) を追加しました。インスタンス変数 __color はクラス外に公開していない変数でありインスタンスメソッド color(self) だけからアクセスできるようにしました。インスタンスメソッドの書き方と使い方を箇条書きにしてみます。
1. 第1引数は必ず self としインスタンス自身を表現する
2. インスタンス変数を return する場合は引数の self を利用して return self.変数名とする
3. 利用する際にインスタンスが必要でインスタンス名.インスタンスメソッドの形式で呼び出し、引数の self に相当する部分は不要
インスタンスメソッドはインスタンスからしか呼び出せないことに注意してください。インスタンスメソッドはクラス内で定義するメソッドのうち最も自然なものだと思います。
ちなみにメソッドもメソッド名の前にアンダースコアをつけることでクラス外に非公開とすることが可能です。クラス内でのみ使うメソッドにはアンダースコアを積極的に使うべきだと思います。
メソッドには他にスタティックメソッドというものがあります。個人的にはこの機能は使っていないこともありうまく説明できません。どのような時にうまみがあるのかうまく説明できないので省略したいと思います。従いましてクラスのメソッドについては今回が最終回です。
Python のクラスに関するまとめの続きは以下からどうぞ。
では、ごきげんよう。