国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python面向?qū)ο笾涌凇⒊橄箢惻c多態(tài)詳解

2020-02-15 22:50:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Python面向?qū)ο笾涌凇⒊橄箢惻c多態(tài)。分享給大家供大家參考,具體如下:

接口類

繼承有兩種用途:

一:繼承基類的方法,并且做出自己的改變或者擴(kuò)展(代碼重用)

二:聲明某個(gè)子類兼容于某基類,定義一個(gè)接口類Interface,接口類中定義了一些接口名(就是函數(shù)名)且并未實(shí)現(xiàn)接口的功能,子類繼承接口類,并且實(shí)現(xiàn)接口中的功能

接口主要是java等語(yǔ)言中的概念,python中并沒(méi)有明確的限定

from abc import ABCMeta,abstractmethodclass Payment(metaclass=ABCMeta):  @abstractmethod  def pay(self,money):    passclass Wechatpay(Payment):  def fuqian(self,money):    print('微信支付了%s元'%money)p = Wechatpay() #不調(diào)就報(bào)錯(cuò)了

抽象類

什么是抽象類

與java一樣,python也有抽象類的概念但是同樣需要借助模塊實(shí)現(xiàn),抽象類是一個(gè)特殊的類,它的特殊之處在于只能被繼承,不能被實(shí)例化

為什么要有抽象類

如果說(shuō)類是從一堆對(duì)象中抽取相同的內(nèi)容而來(lái)的,那么抽象類就是從一堆類中抽取相同的內(nèi)容而來(lái)的,內(nèi)容包括數(shù)據(jù)屬性和函數(shù)屬性。

 比如我們有香蕉的類,有蘋(píng)果的類,有桃子的類,從這些類抽取相同的內(nèi)容就是水果這個(gè)抽象的類,你吃水果時(shí),要么是吃一個(gè)具體的香蕉,要么是吃一個(gè)具體的桃子。。。。。。你永遠(yuǎn)無(wú)法吃到一個(gè)叫做水果的東西。

從設(shè)計(jì)角度去看,如果類是從現(xiàn)實(shí)對(duì)象抽象而來(lái)的,那么抽象類就是基于類抽象而來(lái)的。

從實(shí)現(xiàn)角度來(lái)看,抽象類與普通類的不同之處在于:抽象類中只能有抽象方法(沒(méi)有實(shí)現(xiàn)功能),該類不能被實(shí)例化,只能被繼承,且子類必須實(shí)現(xiàn)抽象方法。這一點(diǎn)與接口有點(diǎn)類似,但其實(shí)是不同的,即將揭曉答案

在python中實(shí)現(xiàn)抽象類

import abc #利用abc模塊實(shí)現(xiàn)抽象類class All_file(metaclass=abc.ABCMeta):  all_type='file'  @abc.abstractmethod #定義抽象方法,無(wú)需實(shí)現(xiàn)功能  def read(self):    '子類必須定義讀功能'    pass  @abc.abstractmethod #定義抽象方法,無(wú)需實(shí)現(xiàn)功能  def write(self):    '子類必須定義寫(xiě)功能'    pass# class Txt(All_file):#   pass## t1=Txt() #報(bào)錯(cuò),子類沒(méi)有定義抽象方法class Txt(All_file): #子類繼承抽象類,但是必須定義read和write方法  def read(self):    print('文本數(shù)據(jù)的讀取方法')  def write(self):    print('文本數(shù)據(jù)的讀取方法')class Sata(All_file): #子類繼承抽象類,但是必須定義read和write方法  def read(self):    print('硬盤(pán)數(shù)據(jù)的讀取方法')  def write(self):    print('硬盤(pán)數(shù)據(jù)的讀取方法')class Process(All_file): #子類繼承抽象類,但是必須定義read和write方法  def read(self):    print('進(jìn)程數(shù)據(jù)的讀取方法')  def write(self):    print('進(jìn)程數(shù)據(jù)的讀取方法')wenbenwenjian=Txt()yingpanwenjian=Sata()jinchengwenjian=Process()#這樣大家都是被歸一化了,也就是一切皆文件的思想wenbenwenjian.read()yingpanwenjian.write()jinchengwenjian.read()print(wenbenwenjian.all_type)print(yingpanwenjian.all_type)print(jinchengwenjian.all_type)            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新源县| 开平市| 上饶县| 奎屯市| 荆门市| 孟连| 从化市| 井陉县| 进贤县| 军事| 扶绥县| 陵川县| 金湖县| 内乡县| 海口市| 义马市| 武汉市| 望都县| 土默特左旗| 金溪县| 常熟市| 岚皋县| 金昌市| 嵊州市| 八宿县| 翁牛特旗| 全椒县| 宕昌县| 民县| 威信县| 云龙县| 葫芦岛市| 梓潼县| 沅陵县| 潞西市| 台山市| 元氏县| 胶州市| 香河县| 阳东县| 温泉县|