1.什么是接口
自己提供给使用者来调用自己功能的方式\方法\入口
2. 为何要用接口
接口提取了一群类共同的函数,可以把接口当做一个函数的集合。
然后让子类去实现接口中的函数。
这么做的意义在于归一化,什么叫归一化,就是只要是基于同一个接口实现的类,那么所有的这些类产生的对象在使用时,从用法上来说都一样。
归一化的好处在于:
1 什么是抽象类
与java一样,python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化
2 为什么要有抽象类
如果说类是从一堆对象中抽取相同的内容而来的,那么抽象类就是从一堆类中抽取相同的内容而来的,内容包括数据属性和函数属性。
从设计角度去看,如果类是从现实对象抽象而来的,那么抽象类就是基于类抽象而来的。
从实现角度来看,抽象类与普通类的不同之处在于:抽象类中只能有抽象方法(没有实现功能),该类不能被实例化,只能被继承,且子类必须实现抽象方法。这一点与接口有点类似,但其实是不同的,即将揭晓答案
3. 在python中实现抽象类
import abc # 调用abc模块 class Animal(metaclass = abc.ABCMeta): #抽象类只能被继承,不能被实例化 @abc.abstractmethod # 添加装饰器 def run(self): # 定义抽象方法,无需实现功能 pass @abc.abstractmethod def eat(self): pass class People(Animal): # 定义子类,继承抽象类,必须包括抽象类中的run和eat方法 def run(self): # 必须包括抽象类的方法,否则报错 print("people is running") def eat(self): print("people is eating") class Pig(Animal): def run(self): print("pig is running") def eat(self): print("pig is eating") #animal = Animal() # 实例化抽象类提示报错 people1 = People() #实例化对象 pig1 = Pig() # 这样大家都是被归一化了,也就是一切皆文件的思想 people1.run() # 调用run()方法 people1.eat() pig1.run() pig1.eat()
4. 抽象类与接口
抽象类的本质还是类,指的是一组类的相似性,包括数据属性(如all_type)和函数属性(如read、write),而接口只强调函数属性的相似性。
抽象类是一个介于类和接口直接的一个概念,同时具备类和接口的部分特性,可以用来实现归一化设计
原文:https://www.cnblogs.com/nanjo4373977/p/12177384.html