1.组合类
指的是 一个类把另一个类的对象作为自己的属性 就称之为组合
当你定义一个类 并且这个类拥有某种类型的属性时 就称之为组
class PC: def open_app(self,app_name): print("open %s" % app_name) class OldBoyStudent: def __init__(self,PC,notebook): self.PC = PC self.notebook = notebook pass pc = PC() notebook = PC() stu = OldBoyStudent(pc,notebook)
2.新式类与经典类
class A:在py2中 A就是一个经典类,经典类不是object的子类 仅在py2中出现
class A(object)先深度 直到有一个公共父类时,查找其他路线(基于C3算法)
3.接口
接口是一套协议规范,具体表现:一堆只有方法声明而没有实现体的方法,而接口中全都是抽象方法,接口的出现是为了提高扩展性,抽象类是为类限制子类必须按照接口要求的来实现
4.鸭子类型
说如果一个对象叫声像鸭子,走路像鸭子,长得像鸭子,那它就是鸭子,是python 推荐的方式,python不喜欢强行限制你
实例
class PC(): def conntent_device(self, usb_device): usb_device.open() usb_device.work() usb_device.close() class Mouse: # 实现接口规定的所有功能 def open(self): print("mouse opened") def work(self): print("mouse working...") def close(self): print("mouse closed") mouse = Mouse() pc = PC() pc.conntent_device(mouse) class KeyBoard: def open(self): print("KeyBoard opened") def work(self): print("KeyBoard working...") def close(self): print("KeyBoard closed") key1 = KeyBoard() # 如果key1的特征和行为都像USB设备 那就把它当做USB设备来使用 # 对于使用者而言可以不用关心这个对象是什么类,是如如何是实现, pc.conntent_device(key1)