• 类的多态和抽象类


    一、多态

    多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)

    1. 序列数据类型有多种形态:字符串,列表,元组

    2. 动物有多种形态:人,狗,猪

    2.多态的目的:
    “多态” 也称之为 “多态性”,目的是为了 在不知道对象具体类型的情况下,统一对象调用方法的规范(比如:名字)。

    多态的表现 “形式之一” 就是继承:
    - 先抽象,再继承

    父类: 定制一套统一的规范。(比如: 方法名统一)
    子类: 遵循父类的统一的规范。(比如: 子类遵循父类方法名的统一)

    注意: 在python中不会强制限制 子类 必须要遵循 父类 的规范,所以出现了抽象类。

     动物的多种形态

    # 动物类
    class Animal:
    
        # 方法 吃
        def eat(self):
            pass
    
        # 方法 叫
        def speak(self):
            pass
    # 猪类
    class Pig(Animal):
        def eat(self):
            print('bia唧...')
    
        def speak(self):
            print('哼哼哼...')
    
    
    # 猫类
    class Cat(Animal):
        def eat(self):
            print('咬ji 咬ji....')
    
        def speak(self):
            print('喵喵喵...')
    
    
    # 狗类
    class Dog(Animal):
        def eat(self):
            print('舔 ji 舔ji...')
    
        def speak(self):
            print('汪汪汪...')
    
    
    animal1 = Dog()
    animal2 = Pig()
    animal3 = Cat()
    
    # 让动物们叫起来
    animal1.speak()
    animal2.speak()
    animal3.speak()
    抽象类
    1.什么是抽象类?

    在python内置的abc模块中,有一个抽象类。

    2.抽象类的作用:
    让子类必须遵循父类的编写规范。

    3.如何实现抽象类
    - 父类需要继承abc模块中,metaclass=abc.ABCMeta
    - 在父类的方法中,需要装饰上 abc.abstractmethod


    注意: 在python中不推荐使用抽象类。

    注意: 子类必须按照父类的方法编写规范,缺一不可。(只要父类中有几个抽象方法,子类就必须要定义几个)
    import abc
    # 父类
    class Animal(metaclass=abc.ABCMeta):
        # 方法 吃
        @abc.abstractmethod
        def eat(self):
            pass
    
        # 方法 叫
        @abc.abstractmethod
        def speak(self):
            pass
    
    
    # 猪类
    class Pig(Animal):
    
        def run(self):
            pass
    
        def eat(self):
            print('bia唧...')
    
        def speak(self):
            print('哼哼哼...')
    
    print(Pig.__dict__)
    print(Animal.__dict__)
    pig_obj = Pig()
    

      

     


  • 相关阅读:
    Linux之vmware安装
    中秋之美
    青春无悔
    MSP430常见问题之指令系统类
    MSP430常见问题之LCD 显示驱动类
    MSP430常见问题之FLASH存储类
    MSP430常见问题之看门狗及定时器类
    MSP430常见问题之电源类
    MSP430常见问题之通信类
    MSP430常见问题之AD转换类
  • 原文地址:https://www.cnblogs.com/lvguchujiu/p/11952725.html
Copyright © 2020-2023  润新知