物件導向程式設計 (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...