在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

python類接口和抽象超類分析

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

1.1 導入模塊執(zhí)行class語句

python導入模塊時會執(zhí)行class語句及主體內(nèi)的頂層語句。

示例

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

1.2 pytho類接口技術

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

# test.py
class Super:
   '''定義一個超類。
  定義一個method方法。
  定義一個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 方法, 并且進行擴展
  '''
   def method(self):
       print('Begin Extender.method')
       Super.method(self)
       print('End Extender.method')
       
class Provider(Super):
   '''定義 Provider 繼承 Super
  實現(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()

''' 運行結果

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)用方法時觸發(fā)提示

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

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

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

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

子類和超類都未提供方法 ,報 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)建實例時觸發(fā)提示

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

(2) 帶有抽象方法的類不能進行實例化。

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

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

抽象方法定義:

(1) python3:超類頭部括號送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進行占位

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

    關注

    1

    文章

    276

    瀏覽量

    41430
  • Class
    +關注

    關注

    0

    文章

    53

    瀏覽量

    19777
  • python
    +關注

    關注

    56

    文章

    4811

    瀏覽量

    85077
收藏 人收藏

    評論

    相關推薦

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

      Python是一種面向對象的高級語言,因此類對于Python非常重要。是一個空間,在該空間中變量(屬性/方法)分別存儲。運算符' . '用于調(diào)用的屬性和方法。
    發(fā)表于 07-30 18:08

    python的理解與使用

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

    JAVA語言的抽象封裝與

    JAVA語言的抽象封裝與5.1 抽象與封裝5.2 Java的5.3 的修飾符5.4 域5.5 方法5.6 訪問控制符面向對象的程序設計
    發(fā)表于 12-14 20:33 ?45次下載

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

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

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

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

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

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

    python的理解與使用

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

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

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

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

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

    Java中抽象類接口的介紹

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

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

    抽象類是一種特殊的,在面向對象編程中起到了很重要的作用。同時,接口也是面向對象編程中的一個重要概念,用于定義的契約和行為。抽象類
    的頭像 發(fā)表于 11-21 09:49 ?1288次閱讀

    java接口是特殊的抽象類

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

    如何理解java中的抽象類

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

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

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

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

    Java 中,抽象類是一種不能直接實例化的,它通常用作其他的父接口的實現(xiàn)
    的頭像 發(fā)表于 11-21 10:23 ?1019次閱讀
    主站蜘蛛池模板: 男啪女色黄无遮挡免费视频 | 日日拍夜夜嗷嗷叫狠狠 | 天天摸日日摸 | 国产精品人成在线播放新网站 | 国产精品自在线天天看片 | 欧美xxxx色视频在线观看 | 午夜美女影院 | 国产亚洲欧美视频 | 四虎免费大片aⅴ入口 | 婷婷网址 | 欧美一级特黄aaaaaa在线看片 | 久久精品人 | 大象焦伊人久久综合网色视 | 新四虎影院| 在线视频图片小说 | 日本视频三区 | 国产福利在线观看你懂的 | 美女又黄又免费的视频 | 免费午夜影片在线观看影院 | 深夜影院一级毛片 | 大尺度免费高清在线观看视频 | 老师办公室高h文小说 | 欧美一区二区在线观看视频 | 国产精品美女久久久 | 青草99 | 日韩三级在线观看视频 | 免费能直接在线观看黄的视频 | 婷婷色影院 | 黄a一级 | 天堂69亚洲精品中文字幕 | 午夜视频在线观看免费观看在线观看 | 嘿嘿嘿视频在线观看网站 | 四虎精品永久在线网址 | 午夜三级网站 | 一区二区不卡免费视频 | 丁香五月缴情综合网 | 国产免费一区二区三区 | 免费人成观看在线网 | 国产一级毛片外aaaa | 亚洲一区二区三区在线 | 中国一级黄色毛片 |