• 面向对象三大特性之多态与多态性


    一、多态

    '''
    多态:
        同一事物的多种形态
    '''
    
    
    # 文件的多种形态:
    
    class File:
        def click(self):
            pass
    
    
    class TextFile(File):
        def read(self):
            print('文本文件双击可以查看内容')
    
    
    class ExeFile(File):
        def exe(self):
            print('可执行文件双击可以执行')
    
    
    file1 = TextFile()
    file2 = ExeFile()
    
    file1.read()
    file2.exe()
    
    # 上面的代码,其实子类压根没用到父类的功能,多态应用如下
    
    import abc
    
    
    class File(metaclass=abc.ABCMeta):  # 同一类事物:文件
        @abc.abstractclassmethod
        def click(self):
            pass
    
    
    class TextFile(File):
        def read(self):
            print('文本文件双击可以查看内容')
    
    
    class ExeFile(File):
        def exe(self):
            print('可执行文件双击可以执行')
    
    
    file1 = TextFile()
    file2 = ExeFile()
    
    '''
    使用abc模块,指定metaclass=ab.ABCMeta,如果子类没有用到父类的功能则会报错
        TypeError: Can't instantiate abstract class TextFile with abstract methods click
    '''
    
    # 修改如下:
    import abc
    
    
    class File(metaclass=abc.ABCMeta):  # 同一类事物:文件
        @abc.abstractclassmethod
        def click(self):
            pass
    
    
    class TextFile(File):
        def click(self):
            print('文本文件双击可以查看内容')
    
    
    class ExeFile(File):
        def click(self):
            print('可执行文件双击可以执行')
    
    
    file1 = TextFile()
    file2 = ExeFile()
    file1.click()
    file2.click()

    二、多态性

  • 相关阅读:
    wap学习记录
    vue router
    webpack 之 缓存处理
    webpack 之 plugin
    webpack 之 loader
    babel实践
    webpack 之 webpack-dev-server自动刷新
    webpack之source map
    vue笔记
    《高性能网站建设指南》笔记
  • 原文地址:https://www.cnblogs.com/lichunke/p/9531241.html
Copyright © 2020-2023  润新知