成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一日一技:如何讓 Python 提醒你不能覆蓋某個父類方法?

開發 后端
Python 原生的語句和關鍵詞,無法禁止開發者覆蓋父類的某個方法。但是,如果你需要的不是禁止,而是在你不小心覆蓋的時候,Python 能提醒你的話,那么 Python 從3.8開始就能原生做到。這就是類型標注中的final關鍵字。

[[428156]]

在前幾天的文章:一日一技:在 Python 里面如何實現一個抽象類中,我們講到Python 可以實現一個抽象類。抽象類里面有一些抽象方法,在繼承這個抽象類的時候,子類必須實現這些抽象方法。

有時候,我們希望在父類中保留一些方法,子類在繼承父類的時候,不準覆蓋這些方法。這個功能,在 Java 中叫做@final。

Python 原生的語句和關鍵詞,無法禁止開發者覆蓋父類的某個方法。但是,如果你需要的不是禁止,而是在你不小心覆蓋的時候,Python 能提醒你的話,那么 Python 從3.8開始就能原生做到。這就是類型標注中的final關鍵字。

如果你不知道什么叫做類型標注,或者不知道它有什么用,那么你可以看我以前的兩篇文章:《一日一技:在Python中使用類型標注》、《一日一技:通過Python 3的類型標注提高PyCharm的自動補全能力》。

要使用這個功能,有一個前提,就是你需要使用 PyCharm 或者 VSCode 這種支持識別類型標注的 IDE,或者你的項目使用 mypy 來做靜態檢查。我們以 PyCharm 為例。

打開 PyCharm,我們來寫一個類:

  1. class Animal: 
  2.     def walk(self): 
  3.         ... 
  4.  
  5.     def dead(self): 
  6.         print('所有生物都會死亡,沒有例外'
  7.  
  8.  
  9. class Dog(Animal): 
  10.     def __init__(self, name): 
  11.         self.name = name 
  12.      
  13.     def walk(self): 
  14.         print('使用四只腳走路'
  15.  
  16.     def dead(self): 
  17.         print('狗不會死亡'
  18.  
  19.  
  20. wangcai = Dog('旺財'
  21. wangcai.walk() 
  22. wangcai.dead() 

運行效果如下圖所示:

可以看到,子類Dog覆蓋了父類Animal里面的兩個方法walk和dead?,F在,我不想讓開發者覆蓋dead方法,如果發現他覆蓋了,就要通過 IDE 發出提醒。這個時候,就可以使用final關鍵詞,如下圖所示:

我們只需要from typing import final,然后使用這個裝飾器@final來裝飾不想被覆蓋的方法,那么,當子類試圖覆蓋它的時候,IDE 就會通過黃色的背景來提醒你這個地方有問題。

在 typing 里面,除了final裝飾器,還有一個Final類型。這個類型可以用來設定常量,例如:

  1. from typing import Final 
  2. PI: Final[float] = 3.141592653 
  3.  
  4. PI = 3.2 

運行效果如下圖所示:

但需要注意的是,類型標注起的是提醒的作用,如果你要不顧提醒強行違反也沒有問題。

 

本文說到的是如何提醒開發者不要覆蓋父類方法。我們也可以通過自定義一個裝飾器,來實現真正禁止其他人覆蓋父類的方法。發現覆蓋就報錯。如果大家有興趣,請在本文下面留言,我們下一篇文章就寫。

本文轉載自微信公眾號「未聞Code」,可以通過以下二維碼關注。轉載本文請聯系未聞Code生公眾號。

 

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2021-10-03 20:08:29

HTTP2Scrapy

2024-07-30 08:16:18

Python代碼工具

2024-07-30 08:11:16

2021-10-08 20:11:40

類方法靜態

2021-10-15 21:08:31

PandasExcel對象

2025-05-28 03:15:00

Scrapy數據sleep

2022-06-09 21:34:41

Python代碼函數

2021-04-12 21:19:01

PythonMakefile項目

2024-07-19 18:23:17

2024-02-20 22:13:48

Python項目Java

2020-05-19 13:55:38

Python加密密碼

2022-06-28 09:31:44

LinuxmacOS系統

2023-10-28 12:14:35

爬蟲JavaScriptObject

2022-03-12 20:38:14

網頁Python測試

2021-09-13 20:38:47

Python鏈式調用

2024-11-13 09:18:09

2021-03-12 21:19:15

Python鏈式調用

2021-04-05 14:47:55

Python多線程事件監控

2024-11-11 00:38:13

Mypy靜態類型

2021-05-08 19:33:51

移除字符零寬
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91高清视频 | 日韩在线精品强乱中文字幕 | 久久精品亚洲精品国产欧美 | 成人免费一级 | 成人一区二区三区在线 | 亚洲国产91| 国产精品美女久久久久久免费 | 99在线播放 | 成人午夜激情 | 国产一区二区三区四区区 | 一呦二呦三呦国产精品 | 国产乱码精品一区二区三区中文 | 日本一区二区三区免费观看 | 日韩久久中文字幕 | 午夜影院 | 亚洲精品天堂 | 95国产精品 | 久久久久国产精品一区三寸 | 毛片免费观看 | 日韩成人一区二区 | 欧美日韩最新 | 日韩美女在线看免费观看 | 五月婷婷激情网 | 91久久国产综合久久 | 久久久精品视频免费看 | 国产精品亚洲一区 | 日本小电影网站 | 91精品国产91久久久久久 | 国产欧美一区二区在线观看 | 欧美日韩一卡二卡 | 日韩欧美国产一区二区三区 | 福利片在线观看 | 日韩在线一区二区三区 | 欧美一区二区三区在线观看 | 国产999精品久久久久久 | 久久男人| va在线 | 你懂的av | 国产午夜精品理论片a大结局 | 亚洲综合在线播放 | 99精品在线|