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)