
ゆうき( @BASEBALLY15 )です^^
前回に,クラスの『継承』について,勉強しました.
現在,『クラスメソッド』について,勉強しているのですが,よく分からないです・・・
それでは,前回と同様に,学校に例えて『クラスメソッド』についてご紹介します.
お願いします・・・

クラスメソッドを使えば,すぐに先生を呼びだせる!

前回は『継承』について,まとめました.
その時は,Aクラスのグループ分けをBクラスで継承しました.
今回は,前回と同様に学校に例えて,『クラスメソッド』についてまとめます.
学校と言えば・・・
担任の先生
がいますよね^^
すぐに,先生を呼ばないといけない!!
そんなことが,学校生活ではありますよね(笑)
そこで使えるのが,今回紹介する『クラスメソッド』です.
『クラスメソッド』を使うと,インスタンスを作る必要が無いので,
すぐに,関数(メソッド)を呼びだすことが出来ます.
それでは,コードを見ていきましょう⤵
コード
まず,クラスの先頭で先生の名前を決めます.
teacher = "鬼塚"
そして,クラスの最後で,このように関数(メソッド)を書きます.
#先生関数を作成
def teach(self):
print("先生は" + self.teacher + "です.")
それでは,実際にクラスメソッドを使わない場合と使う場合に分けて,
どのように表示されるのかをご紹介します⤵
クラスメソッドを使わない場合
まずは,『クラスメソッド』を使わない場合,どのように表示されるのでしょうか?
class Aclass:
teacher = "鬼塚"
#コンストラクタを作成
def __init__(self, name1, name2,name3,name4,name5):
#インスタンス変数を定義
self.name1 = name1
self.name2 = name2
self.name3 = name3
self.name4 = name4
self.name5 = name5
#仲良し1関数を作成
def nakayosi_1(self):
print(self.name1 + "と" + self.name2 + "と" + self.name3 + "は仲良しです^^")
self.__nakayosi_2()
#仲良し2関数を作成
def __nakayosi_2(self):
print(self.name4 + "と" + self.name5 + "は仲良しです^^")
#先生関数を作成
def teach(self):
print("先生は" + self.teacher + "です.")
#インスタンスを作成
aclass = Aclass("前田", "吉田", "大田", "佐藤", "大村")
それでは,実行してみます.
#実行
aclass.teach()
実行結果 先生は鬼塚です.
クラスメソッドを使わない場合,
このようにインスタンスを作らないと,teach関数を呼び出せません.
クラスメソッドを使う場合(本題)
次に,クラスメソッドを使う場合を見ていきます⤵
クラスメソッドを使いたい関数の上に,
@classmethod
を書きます.
そして,teach関数の引数に『cls』と書きます.
@classmethod
#先生関数を作成
def teach(cls):
print("先生は" + cls.teacher + "です.")
『cls』と書くことで,クラスそのものを引数としてます.
それでは,全体のコードを見ていきましょう⤵
class Aclass:
teacher = "鬼塚"
#コンストラクタを作成
def __init__(self, name1, name2,name3,name4,name5):
#インスタンス変数を定義
self.name1 = name1
self.name2 = name2
self.name3 = name3
self.name4 = name4
self.name5 = name5
#仲良し1関数を作成
def nakayosi_1(self):
print(self.name1 + "と" + self.name2 + "と" + self.name3 + "は仲良しです^^")
self.__nakayosi_2()
#仲良し2関数を作成
def __nakayosi_2(self):
print(self.name4 + "と" + self.name5 + "は仲良しです^^")
@classmethod
#先生関数を作成
def teach(cls):
print("先生は" + cls.teacher + "です.")
#実行
Aclass.teach()
実行結果 先生は鬼塚です.
このように,クラスメソッドを使うと,インスタンスを使う必要がありません.
終わりに
今回は,クラス(class)の『クラスメソッド』の使い方についてご紹介しました.
直接,インスタンスに影響しないメソッドを呼び出したいときに使えるので,
ぜひ,使ってみてください^^
それでは・・・