同一种调用方式,却是不同的执行效果.它依赖于继承,在子类中方便定义统一接口
优点:
(1)增加了程序的灵活性
以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)
(2)增加了程序可扩展性
通过继承animal类创建了一个新的类,子类可以复写or 继承父类方法
class Animal:
def run(self):
raise AttributeError('子类必须实现这个方法')
class People(Animal):
def run(self):
print('人正在走')
class Pig(Animal):
def run(self):
print('pig is walking')
class Dog(Animal):
def run(self):
print('dog is running')
def func(obj):
#obj这个参数没有类型限制,可以传入不同类型(例如Person类,Dog类)的值
obj.run() #调用的逻辑都一样,执行的结果却不一样
func(peo1)
func(pig1)
同一种事物的多种形态,动物分为人类,猪类(在定义角度)
class People(Animal):
def run(self):
print('人正在走')
class Pig(Animal):
def run(self):
print('pig is walking')
class Dog(Animal):
def run(self):
print('dog is running')