zoukankan      html  css  js  c++  java
  • python面向对象的约束和自定义异常

    基于人为来约束: 即人为主动抛出异常

    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

    当派生类中没有约束的方法时,就会执行基类中的方法,从而触发异常

    抽象类和抽象方法:

    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中并不常用.

    补充: 在java和c中存在接口,而python中不存在,所以用抽象类+抽象方法来伪造。

    接口是一种数据类型,主要用于约束派生类中必须实现制定的方法;即接口中的方法中不允许写入代码。

    自定义异常:

    python的异常分为两种.
    1、内建异常,就是python自己定义的异常。
    2、不够用,用户自定义异常,
    我们可以看到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
  • 相关阅读:
    CentOS7-Jenkins安装与配置
    jQuery-Ajax H5无刷新分页
    PHP使用MongoDB(CRUD)
    PHP使用Solr(CRUD)
    yum报错:One of the configured repositories failed (CentOS-7
    maevn的nexus私库搭建
    如何分析用户的行为:5个用户分类指标,3个用户分析的重点指标
    数据分析不落地?一个案例教会你!
    数仓建设全流程(附PPT和视频)
    干货 | 一文读懂数据分析
  • 原文地址:https://www.cnblogs.com/feifeifeisir/p/9571812.html
Copyright © 2011-2022 走看看