定義乙個類作為介面或者抽象基類,這樣可以再次之上執行型別檢查,並且確保子類中實現特定的方法。
from abc import abcmeta,abstractclassmethod
class istream(metaclass=abcmeta):
@abstractclassmethod
def read(self,maxbytes=-1):
pass
@abstractclassmethod
def write(self ,data):
pass
抽象基類的核心特徵是不可以被例項化,抽象基類是用來給其他類當作基類使用,子類中需要實現基類中的方法。
子類中需要實現基類中的方法才可以
class socketstream(istream):
def read(self,maxbytes=-1):
...def write(self ,data):
...
抽象基類的主要用途是強制規定所需的介面程式設計
def serialize(obj,stream):
if not isinstance(stream,istream):
raise typeerror('expected an istream')
以上函式中isinstance用於檢查兩個obj型別是否相同
抽象化基類同時也允許其他的類向其註冊
import io
istream.register(io.iobase)
f=open('foo.txt')
isinstance(f,istream)
collections中定義了多種容器,迭代器,numbers中定義了多種數值物件,io中定義了多種io抽象基類。 django中如何定義乙個抽象模型基類
1.在專案目錄項建立乙個python包,取名db 名稱可自己取 2.db包中建立乙個base model.py檔案,名稱可自己取 3.base model.py中定義如下 from django.db import models class basemodel models.model 模型抽象基類...
抽象乙個形狀類
阮寶同學期待著暑假來臨,知道c 不好好複習麻煩不小。沒有多型性,那就不叫物件導向,老師不划重點也能猜到。嘿嘿,自己做個經典題,怎麼變題也不怕。老濕,再難的題還有木有?輸入四個數,前兩個是矩形的長和寬,後兩個是三角形的底邊長和高。分兩行輸出兩個數,第乙個是矩形的面積,第二個是三角形的面積。3.5 6....
定義乙個類
定義乙個類 當你宣告乙個類,你需要列出物件應有的所有變數和所有函式 被稱為屬性和方法.3.1.1中顯示了乙個類的構成.注意在大括號 內你只能宣告變數或者函式.3.1.2中顯示了如何在乙個類中定義三個屬性和兩個方法.1.class name extends another class 2.name n...