わかさぎのブログ

プログラミング、Atcoderの勉強とか

クラスの継承 コンストラクタの再利用

class A:
    def __init__(self):
        self.a = 100

class B:
    def __init__(self):
        self.b = 200
        
class C(A, B):
    def __init__(self):
        A.__init__(self)
        B.__init__(self)
        
        print("a + b = ", self.a + self.b)
    
c = C()    # => a + b = 300

 

クラス継承の時

super().__init__(self):

とか書いてた気がするけど、この書き方でも行ける

 

# -*- coding: utf-8 -*-

class BaseClass(object):    # objectクラスを継承すること

    def __init__(self, a, b):
        self.a = a
        self.b = b

    def sum(self):
        return self.a + self.b

class DerivedClass(BaseClass):

    def __init__(self, a, b):
        # 再利用している
        super(DerivedClass, self).__init__(a, b)

        # スーパークラスのメソッドもここで使える
        print self.sum()

if __name__ == '__main__':

    cls = DerivedClass(10, 5)
    print "sum:" + str(cls.sum())
    print "a:" + str(cls.a)
    print "b:" + str(cls.b)