python面向對象的約束和自定義異常

基於人爲來約束: 即人爲主動拋出異常java

class BaseMessage(object): def send(self,x1): """ 必須繼承BaseMessage,而後其中必須編寫send方法。用於完成具體業務邏輯。 """
        raise NotImplementedError(".send() 必須被重寫.") class Email(BaseMessage): def send(self,x1): """ 必須繼承BaseMessage,而後其中必須編寫send方法。用於完成具體業務邏輯。 """
        print('發送郵件') obj = Email() obj.send(1)
View Code

當派生類中沒有約束的方法時,就會執行基類中的方法,從而觸發異常python

抽象類和抽象方法:ide

from abc import ABCMeta,abstractmethod class Base(metaclass=ABCMeta): # 抽象類
    def f1(self): print(123) @abstractmethod def f2(self):   # 抽象方法
        pass
class Foo(Base): def f2(self): print(666) obj = Foo() obj.f1()
View Code

抽象類能夠把子類中共有的方法寫入,提升複用性,可是這種方式在python中並不經常使用.spa

補充: 在java和c中存在接口,而python中不存在,因此用抽象類+抽象方法來僞造。code

接口是一種數據類型,主要用於約束派生類中必須實現制定的方法;即接口中的方法中不容許寫入代碼。blog

自定義異常:繼承

python的異常分爲兩種.
一、內建異常,就是python本身定義的異常。
二、不夠用,用戶自定義異常,
咱們能夠看到python的異常有個大基類。而後繼承的是Exception。因此咱們自定義類也必須繼承Exception。接口

class KeyError(Exception): pass

class MyException(Exception): def __init__(self,code,msg): self.code = code self.msg = msg try: raise MyException(1000,'操做異常') except KeyError as obj: print(obj,1111) except MyException as obj: print(obj.code,obj.msg) except Exception as obj: print(obj,3333)
View Code
相關文章
相關標籤/搜索