色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python類接口和抽象超類分析

jf_78858299 ? 來源:梯閱線條 ? 作者:小梯子 ? 2023-04-06 15:07 ? 次閱讀

1.1 導(dǎo)入模塊執(zhí)行class語(yǔ)句

python導(dǎo)入模塊時(shí)會(huì)執(zhí)行class語(yǔ)句及主體內(nèi)的頂層語(yǔ)句。

示例

# test.py
class MyClass:
   print('MyClass')
# cmd執(zhí)行下面語(yǔ)句
E:\\documents\\F盤>python
>>> import test
MyClass

1.2 pytho類接口技術(shù)

python類接口技術(shù)通過繼承實(shí)現(xiàn)。

# test.py
class Super:
   '''定義一個(gè)超類。
  定義一個(gè)method方法。
  定義一個(gè)delegate方法,方法內(nèi)調(diào)用子類定義的action方法。
  '''
   def method(self):
       print('in Super.method')
   def delegate(self):
       '''調(diào)用子類定義的action'''
       self.action()
   
class Inheritor(Super):pass

class Replacer(Super):
   '''定義 Replacer 繼承 Super
  替換超類的 method 方法
  '''
   def method(self):
       print('in Replacer.method')

class Extender(Super):
   '''定義 Extender 繼承 Super
  調(diào)用超類的 method 方法, 并且進(jìn)行擴(kuò)展
  '''
   def method(self):
       print('Begin Extender.method')
       Super.method(self)
       print('End Extender.method')
       
class Provider(Super):
   '''定義 Provider 繼承 Super
  實(shí)現(xiàn)超類 delegate 內(nèi)調(diào)用的 action 方法
  '''
   def action(self):
       print('in Provider.action')
       
if __name__ == '__main__':
   for cls in (Inheritor,Replacer,Extender,Provider):
       print('\\n{}....'.format(cls.__name__))
       cls().method()
       
   print('\\nProvider')
   p = Provider()
   p.delegate()

''' 運(yùn)行結(jié)果

E:\\documents\\F盤>python test.py

Inheritor....
in Super.method

Replacer....
in Replacer.method

Extender....
Begin Extender.method
in Super.method
End Extender.method

Provider....
in Super.method

Provider
in Provider.action
'''

1.3 python抽象超類

python類的部分行為由子類提供,則為抽象超類。

1.3.1 調(diào)用方法時(shí)觸發(fā)提示

顯式要求子類必須實(shí)現(xiàn)抽象超類的方法:

(1) 方法一,在超類方法用assert False

(2) 方法二,在超類方法用 raise NotImplementedError

未實(shí)現(xiàn),則在實(shí)例調(diào)用方法時(shí)觸發(fā)報(bào)錯(cuò)提示。

子類和超類都未提供方法 ,報(bào) has no attribute

>>> class AbsSuper:
   def delegate(self):
       self.action()
       
>>> class Provider(AbsSuper):pass
>>> p=Provider()
>>> p.delegate()
Traceback (most recent call last):
 File ", line 1, in

在超類方法用assert False

>>> class AbsSuper:
   def delegate(self):
       self.action()
   def action(self):
       assert False,'子類必須定義 action'

       
>>> class Provider(AbsSuper):pass

>>> Provider().delegate()
Traceback (most recent call last):
 File ", line 1, in

在超類方法用raise NotImplementedError

>>> class AbsSuper:
   def delegate(self):
       self.action()
   def action(self):
       raise NotImplementedError('子類必須定義 action')
>>> class Provider(AbsSuper):pass

>>> Provider().delegate()
Traceback (most recent call last):
 File ", line 1, in

1.3.2 創(chuàng)建實(shí)例時(shí)觸發(fā)提示

(1) 帶有@abstractmethod修飾的方法為抽象方法。

(2) 帶有抽象方法的類不能進(jìn)行實(shí)例化。

(3) 超類有抽象方法時(shí),子類必須重寫超類的抽象方法。

(4) 未重寫,則創(chuàng)建實(shí)例時(shí)觸發(fā)報(bào)錯(cuò)提示。

抽象方法定義:

(1) python3:超類頭部括號(hào)送metaclass**=**ABCMeta。

(2) python2:超類主體定義**metaclass****=**ABCMeta。

(3) 用@abstractmethod修飾方法。

python3示例

>>> from abc import ABCMeta,abstractmethod
>>> class MySuper(metaclass=ABCMeta):
   def delegate(self):
       self.action()
   # @abstractmethod 為抽象方法,子類必須重寫
   @abstractmethod
   def action(self):
       pass  # 抽象方法在父類通常留空,用pass進(jìn)行占位

   
>>> ms=MySuper()
Traceback (most recent call last):
 File "
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口技術(shù)
    +關(guān)注

    關(guān)注

    1

    文章

    275

    瀏覽量

    41371
  • Class
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    19749
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4798

    瀏覽量

    84800
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何使用Python? 優(yōu)勢(shì)有哪些?

      Python是一種面向?qū)ο蟮母呒?jí)語(yǔ)言,因此類對(duì)于Python非常重要。是一個(gè)空間,在該空間中變量(屬性/方法)分別存儲(chǔ)。運(yùn)算符' . '用于調(diào)用的屬性和方法。
    發(fā)表于 07-30 18:08

    python的理解與使用

    python的理解與使用1. 通俗理解(英文名 class),是具有相同特性(屬性)和行為(方法)的對(duì)象(實(shí)例)的抽象模板。從定義上來
    發(fā)表于 03-07 16:51

    JAVA語(yǔ)言的抽象封裝與

    JAVA語(yǔ)言的抽象封裝與5.1 抽象與封裝5.2 Java的5.3 的修飾符5.4 域5.5 方法5.6 訪問控制符面向?qū)ο蟮某绦蛟O(shè)計(jì)
    發(fā)表于 12-14 20:33 ?45次下載

    抽象類接口的區(qū)別及用法

    接口只能包含方法聲明,而抽象類還可以包含方法的定義。
    發(fā)表于 12-28 14:34 ?1600次閱讀

    《Visual C# 2005開發(fā)技術(shù)》抽象類、多態(tài)及接口

    《Visual C# 2005開發(fā)技術(shù)》抽象類、多態(tài)及接口
    發(fā)表于 02-07 15:17 ?0次下載

    分析java接口抽象類區(qū)別

    一。抽象類 二。接口 三。抽象類接口的區(qū)別 一。抽象類 在了解抽象類之前,先來了解一下
    發(fā)表于 09-27 16:40 ?0次下載

    python的理解與使用

    python的理解與使用 1. 通俗理解 (英文名 class),是具有相同特性(屬性)和行為(方法)的對(duì)象(實(shí)例)的抽象模板。 從定
    的頭像 發(fā)表于 03-07 16:51 ?1613次閱讀

    Python繼承的基本規(guī)則

    繼承規(guī)則 與其他基于的語(yǔ)言一樣,可以通過繼承組合多個(gè)定義。 定義可以擴(kuò)展(或繼承)多個(gè)其他。這些又可以擴(kuò)展其他
    的頭像 發(fā)表于 09-20 14:24 ?531次閱讀

    java接口抽象類的區(qū)別

    Java中的接口(Interface)和抽象類(Abstract class)都是抽象的概念,它們可以用來定義的行為和特征。雖然它們具有一些相似之處,但也存在一些重要的區(qū)別。本文將詳
    的頭像 發(fā)表于 11-21 09:45 ?542次閱讀

    Java中抽象類接口的介紹

    Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,提供了抽象類接口兩種機(jī)制來幫助開發(fā)人員組織和管理代碼。本文將詳細(xì)介紹Java語(yǔ)言中抽象類接口的概念、特點(diǎn)、使用方式以及它們之間的區(qū)別和聯(lián)系。
    的頭像 發(fā)表于 11-21 09:47 ?474次閱讀

    抽象類可以實(shí)現(xiàn)接口

    抽象類是一種特殊的,在面向?qū)ο缶幊讨衅鸬搅撕苤匾淖饔谩M瑫r(shí),接口也是面向?qū)ο缶幊讨械囊粋€(gè)重要概念,用于定義的契約和行為。抽象類
    的頭像 發(fā)表于 11-21 09:49 ?1246次閱讀

    java接口是特殊的抽象類

    Java接口是一種特殊的抽象類嗎? 在Java編程語(yǔ)言中,接口(interface)與抽象類(abstract class)是兩種不同的概念,盡管它們之間存在一些相似之處,但在設(shè)計(jì)和使
    的頭像 發(fā)表于 11-21 10:07 ?665次閱讀

    如何理解java中的抽象類

    Java中的抽象類是一種特殊的,無法被實(shí)例化,只能被繼承。它是一個(gè)中間層的,位于具體接口之間,用于定義通用的屬性和方法,并提供一些默
    的頭像 發(fā)表于 11-21 10:16 ?614次閱讀

    java抽象類可以有普通方法嗎

    Java中的抽象類可以有普通方法,但它也可以有抽象方法。抽象類是一種中間狀態(tài),介于普通接口之間。它允許定義方法的具體實(shí)現(xiàn),同時(shí)也可以定義
    的頭像 發(fā)表于 11-21 10:22 ?1601次閱讀

    java抽象類可以有構(gòu)造函數(shù)嗎

    Java 中,抽象類是一種不能直接實(shí)例化的,它通常用作其他的父接口的實(shí)現(xiàn)
    的頭像 發(fā)表于 11-21 10:23 ?951次閱讀
    主站蜘蛛池模板: 特级淫片大乳女子高清视频| 久久九九亚洲精品| 国产午夜人做人免费视频中文| 欧美美女性生活| 伊人久久久久久久久香港| 国产精品99AV在线观看| 日韩精品a在线视频| 爱爱好爽好大好紧视频| 欧美性猛交AAA片| av天堂网站avtt2017| 欧美xxxx印度| 把腿张开再深点好爽宝贝动态图| 欧美性视频xxxxhd| xxxxhd17欧美老师| 热久久综合这里只有精品电影| bl高h文合集| 日韩一区二区三区精品| 高清大胆欧美videossexo| 私密按摩师在线观看 百度网盘| 国产大片51精品免费观看| 十次啦中文网| 国产亚洲精品久久久999密臂| 亚洲精品国产SUV| 久久国产露脸老熟女熟69| 最近免费视频中文2019完整版 | 女子初尝黑人巨嗷嗷叫| caoporn 超碰免费视频| 日韩亚洲视频一区二区三区| 国产精品成人无码免费视频| 亚洲国产在线综合018| 久久精品123| jizzhd中国| 亚洲 欧美 制服 视频二区| 精品一区二区三区四区五区六区| 中文字幕无线手机在线| 亲女乱h文小兰第一次| 国产精品自产拍在线观看中文| 一本道无码字幕在线看| 欧美日本韩国一二区视频| 国产精品亚洲AV色欲在线观看| 影音先锋av333资源网|