python類的繼承

面向對象的三大特性:封裝、繼承、多態
繼承時面向對象編程的優點之一
類的繼承與方法重載:
繼承的特點:
減少代碼和靈活定製新類
子類具有父類的屬性和方法
子類不能繼承父類的私有屬性/方法
子類可以添加新的方法
子類可以修改父類的方法
繼承的語法:
定義類時,在類名後:(繼承的類名)
多重繼承時,括號中放多個父類名,逗號分開
例子:class MyClass(BaseClass)
python中沒有繼承的類,默認繼承Object
類名.base 類名.bases 查看父類
代碼:

# -*- coding=utf-8 -*-
class A:
    pass

print(A.__base__)

class B(A):
    pass

print(B.__base__)

class C:
    pass

class D(A,C):
    pass

print(D.__bases__)

super() 父類
super.方法名() 調用父類方法
子類調用方法時,會先在子類找,子類不存在時,會向父類找

# -*- coding=utf-8 -*-
class Washer:
    company = "Le xi"
    def __init__(self,water=10,scour=2):
        self._water = water
        self.scour = scour
        self.year = 2010
        pass

    @staticmethod
    def spins_ml(spins):
        print("company:",Washer.company)
        return spins * 0.4

    @classmethod
    def get_washer(cls,water,scour):
        return cls(water,Washer.spins_ml(scour))

    @property
    def water(self):
        return self._water

    @water.setter
    def water(self,water):
        if 0 <= water <= 500:
            self._water = water
            pass
        else:
            print("輸入的值有誤!")
            pass
        pass

    @property
    def total_year(self):
        return 2015-self.year

    def set_water(self,water):
        self.water = water
        pass

    def set_scour(self,scour):
        self.scour = scour
        pass

    def add_water(self):
        print('Add water:',self.water)
        pass

    def add_scour(self):
        print('Add scour:',self.scour)
        pass

    def start_wash(self):
        self.add_water()
        self.add_scour()
        print('Start wash...')
        pass
    pass

# if __name__ == '__main__':
#     print(Washer.spins_ml(8))
#     w = Washer()
#     print(w.spins_ml(8))
#     w = Washer(200,Washer.spins_ml(9))
#     w.start_wash()
#     w = Washer.get_washer(200, 10)
#     w.start_wash()
#     pass

class WasherDry(Washer):
    def dry(self):
        print('Dry clothes...')
        pass
    #方法重載
#     def start_wash(self):
#         self.add_scour()
#         self.add_water()
#         print("Start wash...")
#         pass
#     pass
    #調用父類方法
    def start_wash(self):
        print("....")
        super().start_wash()
        print("......")

if __name__ == '__main__':
    w = WasherDry()
    w.start_wash()
    print(w.scour,w.company)
    w.dry()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章