1. 程式人生 > >Python實現介面,抽象基類和列舉

Python實現介面,抽象基類和列舉

在Java語言裡面有介面和抽象基類的概念,在Python裡面用類也能夠實現。
抽象類無法被例項化,而且規定的抽象方法都是需要在子類中實現,具體方法就會有預設的實現。

from abc import ABC, abstractmethod


class Heater(ABC):
    @abstractmethod
    def engage(self):
        pass

    @abstractmethod
    def disengage(self):
        pass

如果一個抽象基類所有的方法都設成抽象的,那就和介面的功能一樣了。
如果要像C語言一樣定義列舉的話,也是用類來實現的。

from enum import Enum


class WarmerPlateStatus(Enum):
    WARMER_EMPTY = 1
    POT_EMPTY = 2
    POT_NOT_EMPTY = 3

這樣就能用類當成列舉一樣用了。

相關推薦

Python實現介面抽象列舉

在Java語言裡面有介面和抽象基類的概念,在Python裡面用類也能夠實現。 抽象類無法被例項化,而且規定的抽象方法都是需要在子類中實現,具體方法就會有預設的實現。 from abc impor

4.6 C++抽象純虛成員函數

中新 error isp ... 先來 必須 pub 對象 c++ 參考:http://www.weixueyuan.net/view/6376.html 總結:   在C++中,可以通過抽象基類來實現公共接口   純虛成員函數沒有函數體,只有函數聲明,在純虛函數聲明結尾加

定義介面或者抽象

你想定義一個介面或抽象類,並且通過執行型別檢查來確保子類實現了某些特定的方法。 解決方案: 使用 abc 模組可以很輕鬆的定義抽象基類 from abc import ABCMeta, abstractmethod class IStream(metaclass=ABCMeta): @a

面向對象程序設計——概述定義派生虛函數

折扣 mem 關系 sed 它的 作用域 pre 負責 虛析構函數 一、OOP:概述   面向對象程序設計的核心思想是數據抽象、繼承和動態綁定。通過使用數據抽象,我們可以將類的接口和實現分離;使用繼承,可以定義相似的類型並對其相似關系建模;使用動態綁定,可以在一定程度上忽略

Python+Selenium框架設計篇之5-框架內封裝實現POM

      前面文章,我們實現了框架的一部分功能,包括日誌類和瀏覽器引擎類的封裝,今天我們繼續封裝一個基類和介紹如何實現POM。關於基類,是這樣定義的:把一些常見的頁面操作的selenium封裝到base_page.py這個類檔案,以後每個POM中的頁面類,都繼承這個基類,

ArrayList既然繼承自AbstractList抽象而AbstractList已經實現了List介面那麼ArrayList為何還要再實現List介面呢?

轉自: http://www.cnblogs.com/bluejavababy/p/4320545.html 首先請看下面這段程式碼: package example; import java.io.Serializable; import java.util.Ar

第13周實驗--任務3--定義抽象Shape由它派生出3個派生Circle、Rectangle、Triangle。求出定義的3個幾何體的面

* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生  * All rights reserved. * 檔名稱:設計一個抽象基類,生出三個派生類。 * 作    者:         雷恆鑫    

DDD的實體、值物件、聚合根的介面:設計與實現

# 1 前置閱讀 在閱讀本文章之前,你可以先閱讀: * 什麼是DDD # 2 實現值物件 值物件有兩個主要特徵:它們沒有任何標識。它們是不可變的。 我們舉個例子:小明是“浙江寧波”人,小紅也是“浙江寧波”人,小王是“浙江杭州”人,在這個例子中,我們把地址可以獨立出一個值物件出來,我們會遇到了多個物件是否相

python(七):元抽象

imp 匿名 exec int 上下文 增加 abstract 分割 als 一、實例創建   在創建實例時,調用__new__方法和__init__方法,這兩個方法在沒有定義時,是自動調用了object來實現的。python3默認創建的類是繼承了object。 c

python單例模式控制成只初始化一次常規型的python單例模式在新式經典中的區別。

spa alt let __main__ python2 urn 時間 div 分享 單例模式的寫法非常多,但常規型的單例模式就是這樣寫的,各種代碼可能略有差異,但核心就是要搞清楚類屬性 實例屬性,就很容易寫出來,原理完全一模一樣。 如下: 源碼: class

ASP.NET MVC 實現頁落網資源分享網站+充值管理+後臺管理(7)之擴充套件區域建立以及文字編輯配置

    一、擴充套件基類和區域建立     (1)在應用之前,我們先在表現層建立一個公共的系統擴充套件檔案來(SystemExtension)存放我們需要延伸和擴充套件的方法類。     在常規的專案系統操作中,我們都需要用到

第13周-任務3-抽象Shape及派生Circle RectangleTriangle

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

JAVA——介面抽象抽象問題

ps 這部分真的是難理解,學生能力有限,花費小三天的時間才初步理解了一些,如有錯誤之處,還請讀者指出,望海涵。 抽象類 特點:(使用abstract修飾) 不能建立例項(不能new一個抽象類) 類中如果包含的方法可為抽象方法也可為普通方法(留給子類) 抽象類都

MyBatis Generator (MBG)如何實現生成的程式碼對應的 mapper 檔案保持與對應的表名大小寫不變

本文對應的示例程式碼,已託管到 github:mybatis-generator 需求場景 首先,我專案的 Java 程式碼規範是變數命名應用駝峰式命名法(Camel-Case)。資料庫表名及欄位名,則用下劃線命名法(即用下劃線分隔不同單詞)。 我用 MBG 生成的程式

python 抽象

具體化抽象基類的兩種方式: 1、通過抽象基類 ABCMeta 的 register 方法註冊。 2、通過繼承的方式。 class Base(metaclass = ABCMeta): @classmethod def __subclasshook__(cls, su

c# 介面抽象抽象方法的例項

用抽象方法和介面實現: 1 建立一個人的類包含屬性:姓名,年齡,性別,住址  對屬性進行封裝,自我介紹,吃的方法 2 建立一個男人的類繼承於人的類,建立一個獨有的特性:體重,對自我介紹的方法進行重寫(輸出:我是?,我來自於?,我的性別是?) 3 建立一個女人的類繼承於人的類

習題 12.4 寫一個程式定義抽象Shape由它派生出3個派生:Circle(圓形)、Rectangle(矩形)、Triangle(三角形)用一個函式printArea分別輸出以上。。。

C++程式設計(第三版) 譚浩強 習題12.4 個人設計 習題 12.4 寫一個程式,定義抽象基類Shape,由它派生出3個派生類:Circle(圓形)、Rectangle(矩形)、Triangle(三

習題 12.5 寫一個程式定義抽象Shape由它派生出5個派生:Circle、Square、Rectangle、Tarpezoid、Triangle。用虛擬函式分別計算幾種圖形面積並求。。。

C++程式設計(第三版) 譚浩強 習題12.5 個人設計 習題 12.5 寫一個程式,定義抽象基類Shape,由它派生出5個派生類:Circle、Square、Rectangle、Tarpezoid、Triangle。用虛擬函式分別計算幾種圖形面積,並求它們的和

python抽象

抽象基類特點 1.不能夠例項化 2.在這個基礎的類中設定一些抽象的方法,所有繼承這個抽象基類的類必須覆蓋這個抽象基類裡面的方法 思考 既然python中有鴨子型別,為什麼還要使用抽象基類? 一是我們在某些情況下希望判定某個物件的型別: from collections.abc import Sized

Java介面抽象內部類

介面的概念     在Java中介面是一個全部由抽象方法組成的集合,介面需要用interface定義,裡面只能有抽象的方法和常量。 介面體現的是事物擴充套件的功能,在Java中,類定義了一個實體,包括實體的屬性,實體的行為。而介面定義了一個實體可能發生的動作,只有一個宣告,