Python基礎之繼承(三)

2021-09-25 13:51:52 字數 3235 閱讀 8446

物件導向程式設計 (oop) 語言的乙個主要功能就是「繼承」。繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。

通過繼承建立的新類稱為「子類」或「派生類」,被繼承的類稱為「基類」、「父類」或「超類」,繼承的過程,就是從一般到特殊的過程。在某些 oop 語言中,乙個子類可以繼承多個基類。但是一般情況下,乙個子類只能有乙個基類,要實現多重繼承,可以通過多級繼承來實現。

繼承概念的實現方式主要有2類:實現繼承、介面繼承。

1、實現繼承是指使用基類的屬性和方法而無需額外編碼的能力。

2、介面繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力(子類重構爹類方法)。

就拿學校的成員舉例子:假如某學校有學生、教師。

學生和教師有什麼共同特性?

他們都有姓名(name)、年齡(age)、性別(***)

所以首先可以建立乙個學校成員類:

class

schoolmember

: member =

0def

__init__

(self,name,age,***)

: self.name=name

self.age=age

self.***=***

self.addnew(

)def

addnew

(self)

:print

('為學校新增新成員[%s]'

% self.name)

schoolmember.member +=

1def

tell

(self)

:print

('---%s---'

% self.name)

for k,v in self.__dict__.items():

print

(k,v)

print

('---end---'

)def

__del__

(self)

:print

('開除了[%s]'

% self.name)

schoolmember.member -=

1

member表示學校成員個數(也就是成員變數)

__init__()方法(相當於建構函式)

addnew() 為學校新增新成員的方法

tell() 說出自己所有屬性的方法

__del__() 開除方法

然後就是教師,教師有工資(salary)和教的課目(course)

class

teacher

(schoolmember)

:def

__init__

(self,name,age,***,salary,course)

: schoolmember.__init__(self,name,age,***)

self.salary = salary

self.course = course

defteaching

(self)

:print

('[%s]是教[%s]的。'

%(self.name, self.course)

)

teacher繼承schoolmember後

重構__init__()方法,並呼叫父類__init__()方法

teaching()方法是輸出該教師教什麼的

最後乙個就是學生,學生有需要交的學費(amount)、所選的專業(course)

class

student

(schoolmember)

: amount =

0def

__init__

(self,name,age,***,course)

: schoolmember.__init__(self, name, age, ***)

self.course = course

self.amount =

0def

pay_tuition

(self, amount)

:print

('[%s]交了[%s]元學費。'

%(self.name, amount)

) self.amount += amount

studnet一樣也是繼承了schoolmember

重構__init__()方法,並呼叫父類__init__()方法

如:為學校新增一名教師:

如:為學校新增一名學生:

輸出教師【老王的所有資訊】和【開除學生小張】

多繼承也是可以的:如

class

cadetteacher

(teacher,student)

:def

__init__

(self,name,age,***)

: schoolmember.__init__(self,name,age,***)

在繼承的時候,用逗號(,)隔開需要繼承的類

最後總結一下:

類的專有方法:

__init__ 建構函式,在生成物件時呼叫

__del__ 析構函式,釋放物件時使用

__repr__ 列印,轉換

__setitem__按照索引賦值

__getitem__按照索引獲取值

__len__獲得長度

__cmp__比較運算

__call__函式呼叫

__add__加運算

__sub__減運算

__mul__乘運算

__div__除運算

__mod__求餘運算

__pow__稱方

類的私有屬性:

__private_attrs 兩個下劃線開頭,宣告該屬性為私有,不能在類地外部被使用或直接訪問,

在類內部的方法中使用時 self.__private_attrs

C 繼承之繼承基礎

一 繼承的相關概念 繼承是 種復 段,在繼承關係 子類繼承父類的成員,由此達到復 的 的。通過繼承定義乙個類,繼承是型別之間的關係建模,共享公有的東西,實現各自本質不同的東西。二 三種訪問限定符 繼承關係 三 繼承的重要說明1.子類擁有父類的所有成員變數和成員函式 2.子類就是一種特殊的父類 3.子...

Python 繼承基礎

一 永不變的三個問答 1 什麼是繼承 繼承一種新建類的方式,新建的類稱之為子類 派生類,被繼承的類稱之為父類 基類 超類 2 為什麼要用繼承 減少類與類之間 元素 3 如何用繼承 class parent1 繼承的父類 pass print parent1.bases class parent2 子...

python基礎 繼承

class a object pass 父類,基類,超類 class b pass 父類,基類,超類 class a son a,b pass 子類,派生類 class ab son a pass 子類,派生類 乙個類 可以被多個類繼承 乙個類 可以繼承多個父類 python裡 print a so...