python面向对象(part3)--继承
生活随笔
收集整理的這篇文章主要介紹了
python面向对象(part3)--继承
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記
開發工具:Spyder
文章目錄
- 繼承
- 例子1
- 例子2(isinstance)
- 例子3(issubclass)
- 舉個例子4(變量繼承)
- 相關概念
繼承
- 定義
可以重用現有類的功能與概念,并在此基礎上進行擴展。
- 優缺點
優點:①一種代碼復用的方式。②以層次化的方式管理類。
缺點:耦合度高
- 語法
- 說明
①子類擁有父類的所有成員。
②子類如果沒有構造函數,將自動執行父類的,但如果有構造函數將覆蓋父類的。此時必須通過super()函數調用父類的構造函數,以確保父類屬性被正常創建。
③子類直接具有父類的成員(共性),還可以擴展新功能。
- 作用
隔離客戶端代碼與功能的實現方式(隔離用和做)。
- 多繼承
多繼承即一個子類繼承兩個或兩個以上的基類,父類中的屬性和方法同時被子類繼承下來。
例子1
代碼:
class Person:def say(self):print("說")class Student(Person):def study(self):print("學習")class Teacher(Person):def teach(self):print("教")s01 = Student() s01.study() # 可以直接使用父類成員 s01.say()p02 = Person() p02.say() # 父類不能使用子類成員 # p02.study()t03 = Teacher() t03.teach() # 不能使用"兄弟"類成員 # t03.study()結果:
例子2(isinstance)
isinstance()方法可以鑒定一個對象是否兼容一個類
代碼:
class Person:def say(self):print("說")class Student(Person):def study(self):print("學習")class Teacher(Person):def teach(self):print("教")s01 = Student() p02 = Person()# 判斷一個對象是否"兼容"一個類型 print(isinstance(s01,Person)) # True print(isinstance(s01,Student)) # True print(isinstance(s01,object)) # True #一個類要么直接,要么間接的繼承object類print(isinstance(s01,Teacher)) # False print(isinstance(p02,Student)) # False結果:
例子3(issubclass)
issubclass()方法可以判斷一個類是否為另一個類的子類
代碼:
class Person:def say(self):print("說")class Student(Person):def study(self):print("學習")class Teacher(Person):def teach(self):print("教")# 判斷一個類是否"兼容"一個類型 print(issubclass(Student,Person)) # True print(issubclass(Student,Teacher)) # False print(issubclass(Student,(Teacher,Person))) # True #(Teacher,Person)中只要有一個為Student類的父類,就會返回True,否則為False print(issubclass(Student,Student)) # True結果:
舉個例子4(變量繼承)
代碼:
class Person:def __init__(self,name):self.name = nameclass Student(Person):def __init__(self,name,score):# 通過函數,調用父類方法super().__init__(name)self.score = scoreclass Teacher(Person):def __init__(self,name,salary):super().__init__(name)self.salary = salarys01 = Student("zs",100) print(s01.score) print(s01.name)p02 = Person("ww") print(p02.name)結果:
內存圖:
相關概念
父類(基類、超類)、子類(派生類)。
父類相對于子類更抽象,范圍更寬泛;子類相對于父類更具體,范圍更狹小。
單繼承:父類只有一個(例如 Java,C#)。
多繼承:父類有多個(例如C++,Python)。
Object類:任何類都直接或間接繼承自 object 類。
總結
以上是生活随笔為你收集整理的python面向对象(part3)--继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python面向对象(part2)--封
- 下一篇: 正确使用标点符号教案一等奖