天天看點

RPA手把手——接口繼承

藝賽旗 RPA10.0全新首發免費下載下傳 點選下載下傳

www.i-search.com.cn/index.html?from=line1

接口繼承就是(基類)父類定義好函數屬性(接口),所有的子類必須有這些定義好的函數屬性,缺一不可。不是為了省代碼的,是用來做強制性限制的舉例說明如下:1 實作三個檔案讀寫類class Disk:

def read(self):

pass

def write(self):

pass

class Cdrom:

def read(self):

pass

def write(self):

pass

class Mem:

def read(self):

pass

def write(self):

pass

2 可以定義一個基類,對上面代碼進行改進class Allfile:

def read(self):

pass

def write(self):

pass

class Disk(Allfile):

def read(self):

print(“disk read”)

def write(self):

print(“disk write”)

class Cdrom(Allfile):

def read(self):

print(“cdrom read”)

def write(self):

print(“cdrom write”)

class Mem(Allfile):

def read(self):

print(“mem read”)

def write(self):

print(“mem write”)

3 但是子類也可以不按照你規定的出牌,Mem 就是不聽話,他不定義 write 的函數屬性,然後就會從父類找。父類裡面又是 passclass Allfile:

def read(self):

pass

def write(self):

pass

class Disk(Allfile):

def read(self):

print(“disk read”)

def write(self):

print(“disk write”)

class Cdrom(Allfile):

def read(self):

print(“cdrom read”)

def write(self):

print(“cdrom write”)

class Mem(Allfile):

def read(self):

print(“mem read”)

m1=Mem()

m1.read() # 輸出mem read

m1.write() # 沒有輸出

4 是以 python 就有一個專門的子產品來實作這個強制性的限制子類,子產品叫 abc導入子產品 abc,給父類 2 個屬性加上裝飾器之後,如果子類再少屬性的話,就直接報錯了,這樣就強制性的限制了子類必須有父類的 2 個方法了import abc

class Allfile(metaclass=abc.ABCMeta):

@abc.abstractstaticmethod

def read(self):

pass

@abc.abstractstaticmethod

def write(self):

pass

class Disk(Allfile):

def read(self):

print(“disk read”)

def write(self):

print(“disk write”)

class Cdrom(Allfile):

def read(self):

print(“cdrom read”)

def write(self):

print(“cdrom write”)

class Mem(Allfile):

def read(self):

print(“mem read”)

m1=Mem() # TypeError: Can’t instantiate abstract class Mem with abstract methods write

繼續閱讀