zoukankan      html  css  js  c++  java
  • 第十一章、面向对象之多态、多态性

    第十一章、面向对象之多态、多态性

    一、多态

    多态指的是一类事物有多种形态

    动物有多种形态:人、狗、猪

    class Animal(): #同一类事物:动物
        def talk(self):
            pass
    
    class People(Animal): #动物的形态之一:人
        def talk(self):
            print('say hello')
    
    class Dog(Animal): #动物的形态之二:狗
        def talk(self):
            print('say wangwang')
    
    class Pig(Animal): #动物的形态之三:猪
        def talk(self):
            print('say aoao')
    

    文件有多种形态:文本文件、可执行文件

    class File(): #同一类事物:文件
        def click(self):
            pass
    
    class Text(File): #文件的形态之一:文本文件
        def click(self):
            print('open file')
    
    class ExeFile(File): #文件的形态之二:可执行文件
        def click(self):
            print('execute file')
    

    二、多态性

    在面向对象方法中一般是这样表示多态性:向不同的对象发送同一条消息(obj.func():是调用了obj的方法func,又称为向obj发送了一条消息func),不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数

    def func(obj):
    	obj.talk()
    -----------------------
    pig=Pig()
    func(pig)
    -----------------------
    #结果是
    say aoao
    

    三、为什么要用多态性(多态性的好处)

    • 增加了程序的灵活性

    • 增加了程序拓展性

    四、鸭子类型

    **Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’ **

    #二者都像鸭子,二者看起来都像文件,因而就可以当文件一样去用
    class TxtFile:
        def read(self):
            pass
    
        def write(self):
            pass
    
    class DiskFile:
        def read(self):
            pass
        def write(self):
            pass
    
  • 相关阅读:
    nginx+uwsgi部署Django
    Git----忽略特殊文件
    Git 分支管理
    Django admin 页面中文名称加s,去除s的设置
    hive-sql参数调优及资源分配
    常用数仓架构/计算引擎
    maven 打包可运行jar包(转)
    spark sql遇到的问题
    分析跨域
    nio案例一:个简单的客户-服务的案例
  • 原文地址:https://www.cnblogs.com/demiao/p/11424631.html
Copyright © 2011-2022 走看看