クラスの文法

クラスは以下のように定義、使用する。基本はPythonベース。以下の特徴がある。

  • インスタンスメソッドの第一引数にselfは不要
    • 関数とメソッドの区別はしない。関数定義時にselfキーワードを使用できるが、メソッドでなく関数として呼び出した場合は、selfはNoneになる
  • 継承機能は存在しない。mixinで代用
  • クラスメソッドとインスタンスメソッドの区別なし
class Foo:
    def __init__():  # コンストラクタ
        self.a = 1  # インスタンス変数にアクセス
    def foo():  # 第一引数にself不要
        print(self.a)

class Bar:
    mixin(Foo.__attrs__)  # 単純に属性(変数と関数)がコピーされる。
    def __init__():
        Foo.__init__()  # (1)superクラスのコンストラクタ呼び出しは、このようにする
        self.b = 2
    def bar():
        print self.foo()  # メソッド(関数)という属性にアクセス

b = Bar()
b.bar()  # 1を表示

def baz():
    print(99, self.b)
b.baz = baz  # bazはbの特異メソッド
b.baz()  # 99, 2を表示