1. 程式人生 > 其它 >068 python是否支援多繼承,舉例說明

068 python是否支援多繼承,舉例說明

1. python是否支援多繼承,請舉例說明

支援多繼承

class Calculator:
    def calculate(self, expression):
        return eval(expression)

class MyPrint:
    def print(self, msg):
        print('msg:', msg)

class MyCalculator1(Calculator, MyPrint):
    pass

my1 = MyCalculator1()
v = my1.calculate("1 + 3 * 6")
my1.print(v)

  

2. 如果python類的多個父類存在相同的成員,按著什麼規則處理

class Calculator:
    def calculate(self, expression):
        self.value = eval(expression)
        return self.value

    def printResult(self):
        print('計算結果:{}'.format(self.value))

class MyPrint:
    def print(self, msg):
        print('msg:', msg)

    def printResult(self):
        print('result:{}'.format(self.value))

class MyCalculator1(Calculator, MyPrint):
    pass

class MyCalculator2(MyPrint, Calculator):
    pass

my1 = MyCalculator1()
v = my1.calculate("1 + 3 * 6")
my1.print(v)
my1.printResult()

my2 = MyCalculator2()
v = my2.calculate("1 + 3 * 6")
my2.print(v)
my2.printResult()

 

msg: 19
計算結果:19
msg: 19
result:19

 

如果多個父類存在衝突的成員,那麼會使用最先遇到的成員(按照繼承類的先後順序)