日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python封装 继承 多态 举例_python面向对象中的封装、继承、多态

發布時間:2023/12/15 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python封装 继承 多态 举例_python面向对象中的封装、继承、多态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

封裝

可以簡單的理解為隱藏一切可以隱藏的實現細節,只向外界提供簡單的編程接口。我們在類中定義的方法其實就是把數據和數據的操作封裝起來了,在我們創建了對象之后,只需要給對象發送一個消息(調用方法)就可以執行方法中的代碼,也就是說我們只需要知道方法的名字和傳入的參數(方法的外部視圖),而不需要知道方法內部的實現細節(方法的內部視圖)。

練習:定義一個類實現一個數字數種

import time

class Clock:

def __init__(self):

# 獲取當前系統時間

t = time.localtime()

self._hour = t.tm_hour

self._minute = t.tm_min

self._second = t.tm_sec

def run(self):

self._second += 1

if self._second == 60:

self._second = 0

self._minute += 1

if self._minute == 60:

self._minute = 0

self._hour += 1

if self._hour == 24:

self._hour = 0

def show(self):

return "%02d:%02d:%02d" % (self._hour, self._minute, self._second)

def main():

clock = Clock()

while True:

# 將光標退到當前行首

print("\r%s" % clock.show(), end="")

time.sleep(1)

clock.run()

if __name__ == '__main__':

main()

繼承

在現實生活中,繼承一般指的是子女繼承父輩的財產,如下圖

搞不好,結果如下..

在程序中繼承是描述事物之間的所屬關系,例如貓和狗都屬于動物,程序中便可以描述為貓和狗繼承自動物;同理,波斯貓和巴厘貓都繼承自貓,而沙皮狗和斑點狗都繼承自狗,如下如所示:

子類可以繼承父類的公共屬性和公共方法,父類中私有的屬性和方法不能被繼承。

單繼承

一般只繼承一個父類就叫做單繼承,在java等靜態語言中只能繼承一個父類,也就不存在單繼承和多繼承了。

示例代碼:

# 定義一個父類,如下:

class Cat(object):

def __init__(self, name, color="白色"):

self.name = name

self.color = color

def run(self):

print("%s--在跑"%self.name)

# 定義一個子類,繼承Cat類如下:

class Bosi(Cat):

# 子類沒有實現__init__方法,則自動調用父類的__init__方法

def setNewName(self, newName):

self.name = newName

def eat(self):

print("%s--在吃"%self.name)

bs = Bosi("印度貓")

print('bs的名字為:%s'%bs.name)

print('bs的顏色為:%s'%bs.color)

bs.eat()

bs.setNewName('波斯')

bs.run()

"""

輸出結果:

bs的名字為:印度貓

bs的顏色為:白色

印度貓--在吃

波斯--在跑

"""

多繼承

從圖中能夠看出,所謂多繼承,即子類有多個父類,并且具有它們的特征。

多繼承的格式如下:

# 定義一個父類

class A:

def printA(self):

print('----A----')

# 定義一個父類

class B:

def printB(self):

print('----B----')

# 定義一個子類,繼承自A、B

class C(A,B):

def printC(self):

print('----C----')

obj_C = C()

obj_C.printA()

obj_C.printB()

"""

輸出結果:

----A----

----B----

"""

如果在上面的多繼承例子中,如果父類A和父類B中,有一個同名的方法,那么通過子類去調用的時候,調用哪個?

class A:

def print(self):

print('----A----')

class B:

def print(self):

print('----B----')

# 定義一個子類,繼承自A、B

class C(A,B):

pass

obj_C = C()

obj_C.print()

"""

輸出結果:

----A----

"""

事實上調用的順序取決于C類先繼承的是哪個類,先繼承的類會先被調用。

也可通過__mor__查看C類的對象搜索方法時的先后順序,接上面的代碼

print(C.__mro__)

"""

輸出結果:

(, , , )

"""

重寫父類的方法

所謂重寫,就是子類中,有一個和父類相同名字的方法,在子類中的方法會覆蓋掉父類中同名的方法

class Cat:

def sayHello(self):

print("halou-----1")

class Bosi(Cat):

def sayHello(self):

print("halou-----2")

class Bali(Cat):

def sayHello(self):

print("halou-----3")

bosi = Bosi()

bali= Bali()

bosi.sayHello()

bali.sayHello()

"""

輸出結果:

halou-----2

halou-----3

"""

通過方法重寫我們可以讓父類的同一個行為在子類中擁有不同的實現版本,當我們調用這個經過子類重寫的方法時,不同的子類對象會表現出不同的行為,這個就是多態(poly-morphism)。

調用父類的方法

class Cat:

def __init__(self,name):

self.name = name

class Bosi(Cat):

def __init__(self,name):

# 調用父類的__init__方法1(python2)

#Cat.__init__(self,name)

# 調用父類的__init__方法2

#super(Bosi,self).__init__(name)

# 調用父類的__init__方法3

super().__init__(name)

self.color = 'yellow'

def getName(self):

return self.name

bosi = Bosi('xiaohua')

print(bosi.name)

print(bosi.color)

"""

輸出結果:

xiaohua

yellow

"""

總結:

上文說過如果在子類中需要父類的構造方法就需要顯式地調用父類的構造方法,或者不重寫父類的構造方法,子類不重寫 __init __,實例化子類時,會自動調用父類定義的 __init __。

如果子類重寫了__init__ 時,實例化子類,就不會調用父類已經定義的 __init __。

如果重寫了__init __ 時,要繼承父類的構造方法,可以使用如下方法:

super(子類,self).init(參數1,參數2,....)

父類名稱.init(self,參數1,參數2,...)

多態

多態的概念是應用于Java和C#這一類強類型語言中,而Python崇尚“鴨子類型”。

總結

以上是生活随笔為你收集整理的python封装 继承 多态 举例_python面向对象中的封装、继承、多态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜精品久久久久久久四虎美女版 | 蜜乳av懂色av粉嫩av | 精品无码国产一区二区三区51安 | 中文字幕一区二区三区四区不卡 | 久久中文免费视频 | 台湾久久 | 国产毛片不卡 | 欧美日韩人妻一区二区 | 仙踪林久久久久久久999 | 色.www| 欧美激情影院 | 美国少妇在线观看免费 | 成人免费一级片 | 亚洲国产精品一 | 日本特黄成人 | 日本美女一级视频 | 亚洲精品国产精品乱码在线观看 | 噜啪啪 | 久草天堂 | 免费国产网站 | 国产成人在线观看网站 | 国产高清久久久 | 国产资源第一页 | 日本少妇性高潮 | 日本乱码一区二区 | 麻豆精品视频免费观看 | а√天堂www在线天堂小说 | 制服丝袜在线第一页 | 中文字幕天堂网 | 91丨porny丨成人蝌蚪 | 日韩精品视频在线观看网站 | 精品欧美激情精品一区 | 777黄色| 国精品一区二区 | 草草久久久无码国产专区 | 中文在线字幕免费观 | 99热精品在线观看 | 香蕉视频黄色在线观看 | 人妻偷人精品一区二区三区 | 久久综合操 | 在线看中文字幕 | 91久久久久国产一区二区 | 黄色片xxx| 骚色综合 | 欧美粉嫩videosex极品 | 国产一区二区久久 | 日韩欧美三级在线 | 国产成人av片 | 大黄毛片 | 在线www | 亚洲图片欧美色图 | 国产激情四射 | 99爱视频| 日韩精品视频免费在线观看 | 88国产精品视频一区二区三区 | 91avcom| 国模无码大尺度一区二区三区 | 一女三黑人理论片在线 | 黄色短视频在线播放 | 天天做天天摸天天爽天天爱 | 青青草手机在线观看 | 五月婷视频| 日本国产精品一区 | 黄网在线观看免费 | 青青草97国产精品免费观看 | 国产精品美女久久久免费 | 狠狠操在线视频 | 亚洲爱情岛论坛永久 | 麻豆av免费在线观看 | 亚洲女优视频 | 黑人av| 久久婷婷五月综合色国产香蕉 | 久久影音先锋 | 青青草这里只有精品 | 99视频 | 波多野结衣电影在线播放 | 欧美成人免费在线 | 波多野42部无码喷潮在线 | a在线免费观看 | 色老大网站 | 亚洲色图另类 | 三级色网 | 欧美jizzhd欧美18 | 在线观看免费视频一区 | 免费观看理伦片在线播放视频软件 | 激情小说专区 | 日韩精品亚洲精品 | 华丽的外出在线 | 精品国产视频一区二区三区 | 免费观看a视频 | 人妻一区二区三区在线 | 天堂二区 | 亚洲成人伦理 | 国产婷婷色一区二区在线观看 | 欧美日本韩国一区 | 男女深夜福利 | 久久免费资源 | 久久久国产成人一区二区三区 | 一区二区久久 |