2009年10月6日火曜日

コンストラクタ

特殊メソッド__init__を定義する
デストラクタは__del__

class A:
    def __init__(self):
        print "init"
    def __del__(self):
        print "del"

クラスを継承し__init__メソッドを定義した場合
明示的にスーパークラスの__init__メソッドを呼び出しさなければ
スーパークラスは初期化されない
class A:
    def __init__(self):
        print "A"

class B(A):
    def __init__(self):
        A.__init__(self)
        print "B"

b = B()

変更不能な型 (int, str, tuple など) を継承した場合
特殊メソッド__new__を定義する
class A(int):
    def __new__(self, i, j):
        return int.__new__(self, i + j)

a = A(4, 6)

print a

詳細はドキュメントで

0 件のコメント:

コメントを投稿