自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一日一技:在 Python 里面如何實(shí)現(xiàn)一個(gè)抽象類(lèi)

開(kāi)發(fā) 后端
在某個(gè)在線(xiàn)教育的網(wǎng)站上設(shè)計(jì)模式相關(guān)的課程中,某老師說(shuō) Python 不支持抽象類(lèi)和接口。

 [[427284]]

在某個(gè)在線(xiàn)教育的網(wǎng)站上設(shè)計(jì)模式相關(guān)的課程中,某老師說(shuō) Python 不支持抽象類(lèi)和接口。

但實(shí)際上,Python 支持抽象類(lèi)。Python 自帶的abc模塊用于實(shí)現(xiàn)抽象類(lèi)相關(guān)的定義和操作。

我們通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明,如何在 Python 中實(shí)現(xiàn)抽象類(lèi):

  1. from abc import ABC, abstractmethod 
  2.  
  3. class People(ABC): 
  4.     @abstractmethod 
  5.     def walk(self): 
  6.         pass 
  7.      
  8.     @abstractmethod 
  9.     def eat(self): 
  10.         pass 
  11.      
  12.     def dance(self): 
  13.         print('我正在跳舞'
  14.      

從abc模塊導(dǎo)入ABC類(lèi),和abstractmethod抽象方法裝飾器?;贏BC類(lèi)可以實(shí)現(xiàn)一個(gè)抽象類(lèi)。通過(guò)@abstractmethod裝飾一個(gè)方法,讓它成為一個(gè)抽象方法。抽象方法在子類(lèi)中必需被實(shí)現(xiàn)。

抽象類(lèi)不能被實(shí)例化,所以我們實(shí)例化一下,可以看到這里報(bào)錯(cuò)了,如下圖所示:

我們?cè)倏匆幌?,如果繼承抽象類(lèi),但是沒(méi)有實(shí)現(xiàn)其中的某個(gè)抽象方法,也會(huì)導(dǎo)致報(bào)錯(cuò)。如下圖所示:

當(dāng)我們把所有抽象方法都實(shí)現(xiàn)了以后,子類(lèi)就能夠正常初始化了,如下圖所示:

抽象類(lèi)People中的dance不是抽象方法,所以子類(lèi)不需要覆蓋。抽象類(lèi)是軟件開(kāi)發(fā)中一個(gè)非常重要的概念,通過(guò)定義抽象類(lèi),我們可以約定子類(lèi)必需實(shí)現(xiàn)的方法。當(dāng)我們一個(gè)類(lèi)有幾十上百個(gè)方法時(shí),用抽象方法來(lái)防止子類(lèi)漏掉某些方法是非常方便的做法。

責(zé)任編輯:武曉燕 來(lái)源: 未聞Code
相關(guān)推薦

2021-03-12 21:19:15

Python鏈?zhǔn)?/a>調(diào)用

2021-09-13 20:38:47

Python鏈?zhǔn)?/a>調(diào)用

2021-07-27 21:32:57

Python 延遲調(diào)用

2022-06-28 09:31:44

LinuxmacOS系統(tǒng)

2024-11-11 00:38:13

Mypy靜態(tài)類(lèi)型

2024-07-30 08:11:16

2024-07-30 08:16:18

Python代碼工具

2021-10-15 21:08:31

PandasExcel對(duì)象

2021-04-12 21:19:01

PythonMakefile項(xiàng)目

2020-05-19 13:55:38

Python加密密碼

2024-02-20 22:13:48

Python項(xiàng)目Java

2021-06-08 21:36:24

PyCharm爬蟲(chóng)Scrapy

2023-10-28 12:14:35

爬蟲(chóng)JavaScriptObject

2022-03-12 20:38:14

網(wǎng)頁(yè)Python測(cè)試

2022-06-09 21:34:41

Python代碼函數(shù)

2021-05-08 19:33:51

移除字符零寬

2021-04-05 14:47:55

Python多線(xiàn)程事件監(jiān)控

2024-11-13 09:18:09

2024-04-08 00:00:02

setup技巧Pypi

2022-05-16 20:18:41

商品數(shù)據(jù)監(jiān)控
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)