Python のお勉強7 ( クラス )
「Python のお勉強シリーズ」第7回目はクラスについてサンプルコード書いてみました。
■ class.py
#coding: cp932 class TestClass: val = 0 def __init__(self, a): print("__init__") self.a = a def getA(self): return self.a def testMethod(self, arg): print("self:", self) print("arg:", arg) #静的メソッドの宣言 ( 暗黙の self の記載は必要ない ) @staticmethod def staticMethod(arg): print(arg) #クラスメソッドの宣言 ( 暗黙の cls:クラスオブジェクト の記載が必要 ) @classmethod def classMethod(cls, arg): print("cls:", cls) print("arg:", arg) if __name__ == "__main__": #インスタンスを生成 ( __init__() が呼ばれる ) print("----- create instance -----") instance = TestClass("aaa") print("----- val access -----") print(instance.val) instance.val = 1 #値の書き換え print(instance.val) print("----- call getA() -----") a = instance.getA() print(a) print("----- call testMethod() -----") instance.testMethod("hoge") #静的メソッドはインスタンス、クラスオブジェクトどちらからも呼び出し可能 print("----- call staticMethod() -----") instance.staticMethod("uga") TestClass.staticMethod("oro") #クラスメソッドもインスタンス、クラスオブジェクトどちらかも呼び出し可能 print("----- call classMethod() -----") instance.classMethod("uga") TestClass.classMethod("oro")
■ 実行結果
----- create instance ----- __init__ ----- val access ----- 0 1 ----- call getA() ----- aaa ----- call testMethod() ----- self: <__main__.TestClass object at 0x02420E30> arg: hoge ----- call staticMethod() ----- uga oro ----- call classMethod() ----- cls: <class '__main__.TestClass'> arg: uga cls: <class '__main__.TestClass'> arg: oro
属性、コンストラクタ、メソッド ( インスタンスメソッド、クラスメソッド、スタティックメソッド ) を定義したクラスをごにょごにょさわってみた感じです。特別書くことはありませんが・・・暗黙の引数とかがあるんですね。
以上になります。