面向对象的三大特征-多态
多态:多种状态
1 #设定抽象类 定义动物规则 2 import abc 3 class Animal(metaclass = abc.ABCMeta): 4 5 #设定抽象方法 叫 6 @abc.abstractmethod 7 def say(self): 8 pass 9 10 #设定抽象方法 跑 11 @abc.abstractmethod 12 def run(self): 13 pass 14 15 #声明小狗的类 16 class Dog(Animal): 17 #设定抽象方法 叫 18 def say(self): 19 print('小狗汪汪叫') 20 21 #设定抽象方法 跑 22 def run(self): 23 print('小狗四条腿跑~') 24 25 #声明小猫的类 26 class Cat(Animal): 27 #设定抽象方法 叫 28 def say(self): 29 print('小猫喵喵叫~') 30 31 #设定抽象方法 跑 32 def run(self): 33 print('小猫撒腿就跑~') 34 35 #声明小鸡的类 36 class Chick(Animal): 37 #设定抽象方法 叫 38 def say(self): 39 print('小鸡咯咯叫') 40 41 #设定抽象方法 跑 42 def run(self): 43 print('小鸡两条腿跑') 44 45 #实例化小狗,小猫和小鸡的对象 46 xiaohei = Dog()#小狗 47 xiaohua = Cat()#小猫 48 xiaofei = Chick()#小鸡 49 50 #声明行为类 51 class Action: 52 #初始化方法 53 def __init__(self,animal): 54 #将接受的动物 保存到当前对象中 55 self.animal = animal 56 57 #叫的方法 58 def jiao(self): 59 #调用动物的叫的方法 60 self.animal.say() 61 62 #跑的方法 63 def pao(self): 64 self.animal.run() 65 66 67 #实例化行为类的对象 68 action = Action(xiaohei) 69 70 #调用行为对象的方法 71 action.jiao() 72 #输出结果:小狗汪汪叫 73 action.pao() 74 #输出结果:小狗四条腿跑~ 75 76 #修改传入的动物 77 action.animal = xiaohua 78 79 #调用行为对象的方法 80 action.jiao() 81 #输出结果:小猫喵喵叫~ 82 action.pao() 83 #输出结果:小猫撒腿就跑~ 84 85 #修改传入的动物 86 action.animal = xiaofei 87 88 #调用行为对象的方法 89 action.jiao() 90 #输出结果:小鸡咯咯叫 91 action.pao() 92 #输出结果:小鸡两条腿跑