python面向對象進階-01類的繼承

類的繼承

什麼是繼承

1.繼承是一種新建類的方式,新建的類稱爲子類,被繼承的類稱爲父類,也成爲了基類
2.繼承的子類能直接使用父類已經存在的方法和屬性
3.繼承是類與類之間的關係

爲何用繼承

繼承的一方能夠直接使用被繼承一方已經有的東西
其目的是爲了重用已經有的代碼,提升重用性
使用繼承能夠減小代碼的冗餘

對象的繼承

語法:

```python
class 類名稱(父類的名稱):
類的內容python

使用__bases__方法能夠獲取對象繼承的類

在python中 一個子類能夠同時繼承多個父類

class Parent1:
    pass
class Parent2:
    pass
class Sub1(Parent1, Parent2):
    pass

print(Sub1.__bases__)
print(Parent1.__bases__)

繼承與抽象

什麼是繼承

繼承描述的是子類與父類之間的關係,是一種什麼是什麼的關係。要找出這種關係,必須先抽象再繼承,抽象即抽取相似或者說比較像的部分。編程

什麼是抽象

抽象只是分析和設計的過程當中,一個動做或者說一種技巧,經過抽象能夠獲得類編程語言

抽象的做用

抽象最主要的做用是劃分類別(能夠隔離關注點,下降複雜度)設計

單純抽象抽象的2個分層

多個對象比比較像的部分抽取成類;
多個類比較像的部分抽取成父類。

繼承和抽象的關係

基於抽象的結果,經過編程語言去實現它,確定是先經歷抽象這個過程,才能經過繼承的方式去表達出抽象的結構。

繼承查找順序能夠把類分紅2種

新式類

繼承了object的類以及該類的子類,都是新式類
Python3中全部的類都是新式類

經典類

沒有繼承object的類以及該類的子類,都是經典類
只有Python2中才有經典類

有些時候代碼爲了更好的兼容python2和3能夠再父類語句格式時候都加上(objest),這樣都默認爲新式類了

繼承與抽象的列子

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def say_hi(self):
        print("name:%s,gender:%s,age:%s" % (self.name,self.gender,self.age))
class Teacher(Person):
    def teaching(self):
        print("老師教學生,寫代碼....")
t1 = Teacher("jack","male",20)
t1.say_hi()
class  Student(Person):
    pass
stu1 = Student("rose","female",18)
stu1.say_hi()

對象

對象是特徵與功能的集合體

對象查找屬性的順序

對象查找屬性的順序:對象本身-》對象的類-》父類-》父類。。。=》objectcode

列子:對象

class A:
    text = "haha"
class B(A):
    text = "heihei"
    pass
b = B()
b.text = "xixi"
print(b.text)
相關文章
相關標籤/搜索