1. 程式人生 > >python異常處理和約束

python異常處理和約束

介面的作用 #1,方便別人呼叫 #2,有利於隱藏程式碼塊 #3,可以提高程式碼複用,減少冗餘 什麼是介面 ?介面只是定義了一些方法,而沒有去實現,多用於程式設計時,只是設計需要有什麼樣的功能,但是並沒有實現任何功能,這些功能需要被另一個類(B)繼承後,由 類B去實現其中的某個功能或全部功能。在python中介面由抽象類和抽象方法去實現,介面是不能被例項化的,只能被別的類繼承去實現相應的功能。個人覺得介面在python中並沒有那麼重要,因為如果要繼承介面,需要把其中的每個方法全部實現,否則會報編譯錯誤,還不如直接定義一個class,其中的方法實現全部為pass,讓子類重寫這些函式。關於抽象類和介面的區別可以參考: 引數抽象類介面預設的方法實現它可以有預設的方法實現介面完全是抽象的,根本不存在方法的實現實現子類使用extends關鍵字繼承抽象類.如果子類不是抽象類的話,它需要提供抽象類中所有宣告的方法實現.子類使用關鍵字implements實現介面.它需要提供介面中所有宣告的方法實現構造器抽象類可以有構造器介面不能有構造器與正常JAVA類的區別除了不能例項化抽象類之外,它和普通JAVA類沒有任何區別介面是完全不同的型別訪問修飾符抽象方法可以有public、protected和default這些修飾符介面方法預設修飾符是public,不可以是使用其他的修飾符main方法抽象方法可以有main方法,可以執行它介面沒有main方法,不能執行它多繼承抽象方法可以繼承一個類和實現多個介面介面只可以繼承一個或多個其他介面速度它比介面速度快介面是稍微有點慢,需要時間去尋找在類中實現的方法新增新方法在抽象類中新增新的方法,可以給它提供預設的實現,不需要改變你現在的程式碼在介面中新增方法,必須改變實現該介面的類 當然如果有強制要求,必須所有的實現類都必須按照介面中的定義寫的話,就必須要用介面。

用抽象類和抽象函式實現方法

#抽象類加抽象方法就等於面向物件程式設計中的介面
from abc import ABCMeta,abstractmethod
 
class interface(object):
    __metaclass__ = ABCMeta #指定這是一個抽象類
    @abstractmethod  #抽象方法
    def Lee(self):
        pass
    
    def Marlon(self):
        pass
 
class RelalizeInterfaceLee(interface):#必須實現interface中的所有函式,否則會編譯錯誤
    def __init__(self):    
        print '這是介面interface的實現'
    def Lee(self):
        print '實現Lee功能'        
    def Marlon(self):
        pass   
 
 
class RelalizeInterfaceMarlon(interface): #必須實現interface中的所有函式,否則會編譯錯誤
    def __init__(self):    
        print '這是介面interface的實現'
    def Lee(self):
        pass      
    def Marlon(self):
        print "實現Marlon功能"