# --> ''' class interface 接口: 建立关联的桥梁, 方便管理代码 (python中没有接口语法) 接口类: 用来定义功能的类 为继承它的子类提供功能 该类的功能法方法一般不需要有实现体 实现体有继承它的子类实现 print(len('123')) # 面向过程 # 知道操作的功能,但不明确操作的具体对象 print('123'.__len__()) # 面向对象 # 清晰知道操作对象,但不明确具体的操作方法 ''' # -- ( 抽象接口 ) ------------------------------------------------------------------------------------------- # -- ( 案例说明 ) # class 宠物接口: # def 关怀主人(self):pass # class 看门接口: # def 看门(self): pass # class 狗(宠物接口,看门接口): # 类狗拥有(宠物,看门)的父类,也就可以拥有(关怀主人,看门)的方法 # def 叫(self):pass 叫的功能 # def 吃(self):pass 吃的功能 # def 睡(self):pass 睡的功能 # class 猫(宠物接口,看门接口):猫同上 # def 叫(self):pass # def 吃(self):pass # def 睡(self):pass # -- ( 抽象 ) ------------------------------------------------------------------------------------------- # -- ( 抽象父类:拥有抽象方法 ( 子类共有的方法,但是父类不能有具体的实现体 ) 的父类 ) # -- ( 抽象方法:方法名是具体的,但是实现体是抽象的,在子类中重新具象化 ) # -- ( python 中借助abc来实现抽象父类 import abc ) # -- ( 实现抽象语法 ) ------------------------------------------------------------------------------------------- # -- ( 抽象基类 模块:abstract(抽象) base(基础) class(类型) ) ------------------------------------------------------------------------------------------- # import abc # class ClsName(metaclass=abc.ABCMeta): # @abc.abstractmethod # -- ( 案例 ) ------------------------------------------------------------------------------------------- # -- ( 元类:meta class ) ------------------------------------------------------------------------------------------- import abc class Canine(metaclass=abc.ABCMeta): # 犬科 # 抽取 狗和狼 的共性到父类 犬科 def __init__(self, name): self.name = name def run(self): print(self.name + 'running') def eat(self): print(self.name + 'eating') def sleep(self): print(self.name + 'sleeping') # 抽象父类中的抽象方法,继承它的子类中 必须 有自己的实现体 @abc.abstractmethod # 子类必须重写此方法 def howl(self): # print(self.name) pass class Dog(Canine): def watchdoor(self): print('wtachdoor') def howl(self): print('Howwwwwwwwwwwww') class Wolf(Canine): def hunter(self): print('wtachdoor') def howl(self): print('oooooooooooooo')