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
相关文章
相关标签/搜索