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,无法实例化
posted @ 2022-11-07 18:50  kangshong  阅读(76)  评论(0编辑  收藏  举报