接口类与抽象类 加总结

、接口类 python 没有接口的概念,只能借助抽象类的模块 来实现接口类
接口类:(多继承,父类不实现)
①是规范子类的一个模板,只要接口类中定义的,就应该在子类中实现
②接口类不能被实例化 , 它只能被继承
③支持多继承,鼓励多继承
一开始的小代码:
class Payment:
def pay(self,money):pass     # 不实现
class Apple_Pay(Payment):
      def pay(self,money):
        print('您使用苹果支付支付了%s元'%money)
标准小代码: (就是引发了异常,如果子类没实现接口的方法或方法名错误,则一实例化就报错)
from abc import ABCMeta,abstractmethod
class Payment(metaclass=ABCMeta): #模板,接口类
    @abstractmethod  #装饰接口类中方法的,加上这个装饰器,自动检测子类中的方法名
    def pay(self,money):pass
    @abstractmethod
    def get(self):pass
class Apple_Pay(Payment):
    def pay(self,money):
        print('您使用苹果支付支付了%s元'%money)
.....................................
二、抽象类
抽象类: ①模板 规范
②抽象类可以实现一些子类共有的功能和属性
③不鼓励多继承
④抽象类不能被实例化
⑤必须让子类实现抽象类中的抽象方法
接口类在抽象类的基础上,少了实现方法,抽象类可以被实现
例:文件操作 :打开文件 关闭文件 写文件 读文件
from abc import ABCMeta,abstractmethod
class Base(metaclass=ABCMeta):
def __init__(self,filename):
        self.filename = filename
    @abstractmethod #抽象方法
    def open(self):
        return 'file_handler'       # 呐,可以实现
    @abstractmethod
       def close(self):pass
class File(Base):
       def open(self):pass
       def close(self):pass
三、两个原则
依赖倒置原则:
高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。换言之,要针对接口编程,而不是针对实现编程
接口隔离原则:
使用多个专门的接口,而不是用单一的总接口,即,客户端不应该以来那些不需要的接口
==============================================================================================================
面向对象
类 :一类具有相同属性和方法的事物
类的定义:class
类中可以定义的方法种类:
    普通方法 self 对象
    类方法 cls @classmethod类/对象
    静态方法 @staticmethod类/对象
    属性方法 self @property对象
    私有方法 self __方法名 self/cls
类中可以定义的属性: 静态属性 类
对象:
实例化 : 类名()
    创造对象
    初始化对象 __init__
    返回一个对象
对象的属性:
    普通属性 对象
    私有属性 __属性名 self
属性的操作
    增 对象名.新属性名 = 值
    删del对象名.属性名
    改 对象名.属性名 = 新值
    查 对象名.属性名
组合: 一个类的对象作为另一个类对象的属性;什么有什么
继承: 解决代码的复用,提取公共代码到父类;什么是什么
单继承和多继承
子类继承了父类除了私有的之外的所有属性和方法
子类执行方法的查找顺序:
    经典类中:先找自己,自己没有找父类,遵循深度优先
    新式类中:先找自己,自己没有找父类,遵循广度优先
子类执行父类的方法:
    1.指名道姓 指到谁就是谁 父类名.父类中的方法名(self)
    2.super只能在新式类中使用,且找的顺序是mro顺序super(子类名,子类对象名).方法名()
*** 抽象类和接口类
    @abstractmethod
多态
python 天生多态
崇尚鸭子类型 : 不需要通过继承关系就实现对相似的功能

洁身自爱 -- 张先生
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值