python物件導向之類的繼承

2021-10-05 11:47:55 字數 3424 閱讀 7958

繼承:**復用的高階抽象

繼承是物件導向程式設計的精髓之一

實現了以類為單位的高抽象級別**復用

繼承是新定義類能夠幾乎完全使用原有類屬性與方法的過程

基類的屬性基本等同於定義在派生類中

派生類可以直接使用基類的類屬性、例項屬性

派生類可以直接使用基類的各種方法

使用基類的類方法和類屬性時,要用基類的類名呼叫

class

democlass

: count=

0def

__init__

(self,name)

: self.name=name

democlass.count+=

1def

getname

(self)

:return self.name

class

humannameclass

(democlass)

:def

printname

(self)

:return

str(democlass.count)

+self.name+

'同志'

#對基類類屬性的使用

dc1=humannameclass(

"老王"

)print

(dc1.getname())

#對基類例項方法的使用

print

(dc1.printname())

#對派生類例項方法的使用

輸出:老王

1老王同志

派生類只能繼承基類的公開屬性和方法

派生類不能繼承基類的私有屬性和私有方法

object是python最基礎類的名字,不建議翻譯理解

所有類定義時預設繼承object類

保留屬性和方法本質上是object類的屬性和方法

屬性過載:派生類定義並使用了用基類相同名稱的屬性

方法過載:派生類定義並使用了與基類相同名稱的方法

class

democlass

: count=

0def

__init__

(self,name)

: self.name=name

democlass.count+=

1class

humannameclass

(democlass)

: count=

99def

__init__

(self,name)

: self.name=name

humannameclass.count-=

1def

printcount

(self)

:return

str(humannameclass.count)

+self.name

dc1=humannameclass(

"老王"

)print

(dc1.printcount())

輸出:98老王

分為完全過載和增量過載,完全過載就是在派生類中重寫同名方法。

增量過載用super()方法

class

democlass

: count=

0def

__init__

(self,name)

: self.name=name

democlass.count+=

1def

printcount

(self)

:return

str(democlass.count)

+self.name

class

humannameclass

(democlass)

:def

__init__

(self,name)

: self.name=name

defprintcount

(self)

:return

super()

.printcount()+

"同志"

dc1=humannameclass(

"老王"

)print

(dc1.printcount())

輸出:0老王同志

class

democlass

:def

__init__

(self,name)

: self.name=name

defprintcount

(self)

:return self.name

class

nameclass

:def

__init__

(self,title)

: self.nick=title

defprintcount

(self)

:return self.nick+

'同志'

class

humannameclass

(nameclass,democlass)

:#繼承是從左至右

pass

dc1=humannameclass(

"老王"

)print

(dc1.printcount())

輸出:老王同志

class

democlass

:def

__init__

(self,name)

: self.name=name

defprintcount

(self)

:return self.name

class

nameclass

:def

__init__

(self,title)

: self.nick=title

defprintcount

(self)

:return self.nick+

'同志'

class

humannameclass

(democlass,nameclass)

:#繼承是從左至右

defprintcount

(self)

:return

super()

.printcount()+

"你好"

dc1=humannameclass(

"老王"

)print

(dc1.printcount())

輸出:老王你好

物件導向之類的繼承

繼承 現實世界中,通過分析多種型別,然後發現有一些共同特徵和一些共同行為 再將這些種類歸納為一種新型別 如 黃色 的人 白色 的人 人 黑色 的人 再如 狗 能動,能吃,能叫 旺旺 能睡 貓 能動,能吃,能叫 喵喵 能睡 都是動物 計算機語言中 應該先編寫父型別再編寫子型別,然後再有物件 如 先編寫...

python物件導向之類,物件

類別,乙個是抽象概念 小a的朋友們 是一些列具備相同特徵和相同行為的物件的集合 就是具體操作的某個事物,具備自己的特徵和行 小a的朋友 小明 類包含一系列物件 物件屬於某個類 在現實中先有物件,再有類 在程式中是,先有類,才能有物件 而在程式中是先有類才能物件,我們必須先告訴計篡機這類的物件有什麼特...

Python中物件導向之類

1.建構函式案例 class complex def init self,real,imag 此處要記得寫引數self self.r real self.i imag print 建構函式被呼叫 x complex 3.0,4.5 print x.r,x.i 2.析構函式 案例class compl...