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


属性、コンストラクタメソッド ( インスタンスメソッド、クラスメソッド、スタティックメソッド ) を定義したクラスをごにょごにょさわってみた感じです。特別書くことはありませんが・・・暗黙の引数とかがあるんですね。

以上になります。

[ 環境情報 ]
Windows 7 SP1
Python 3.4.3