Python基础之面向对象:4、三大特征-多态
面对对象之多态
一、多态
1、多态的概念
多态在实际应用时较为抽象,指事物的多种形态,而相同的类,就应该具有这个类的基本功能
就比如说,人作为一个种类,每一个人就相当于对象,在每个对象当中,我们都会走路、说话、吃饭,而每当我们听到这些名词时就会自然的联想到相应的动作,和作用。这就是多态的一种表现形式。
也就是说,当我们在定义同一个父类中的多个子类时,就应该把每个子类中形态相同,而代码不同的函数名同一定义为同一种叫法
"""
鸭子类型: 只要你看上去像鸭子 走路像鸭子 说话像鸭子 那么你就是鸭子
"""
2、多态的实际应用
1、自我约束
# 1、定义一个类
class Animal(self):
class Animal:
def spark(self):
'''叫的方法'''
pass
class Cat(Animal):
def spark(self):
print('喵喵喵')
class Dog(Animal):
def spark(self):
print('汪汪汪')
class Pig(Animal):
def spark(self):
print('哼哼哼')
2、abc模块
import abc
# 指定metaclass属性将类设置为抽象类,抽象类本身只是用来约束子类的,不能被实例化
class Animal(metaclass=abc.ABCMeta):
@abc.abstractmethod
# 该装饰器限制子类必须定义有一个名为talk的方法
def talk(self):
# 抽象方法中无需实现具体的功能
pass
class Cat(Animal):
# 但凡继承Animal的子类都必须遵循Animal规定的标准
def talk(self):
pass
cat = Cat()
# 若子类中没有一个名为talk的方法则会抛出异常TypeError,无法实例化