zoukankan      html  css  js  c++  java
  • 多态与多态性

    1. 什么是多态

        多态指的是同一种/类事物的不同形态

    2.为何要用多态性

      1 增加了程序的灵活性

      2 增加了程序的可扩张性

    多态性:分为静态多态性和动态多态性

        多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象

        多态性的精髓:统一

    3. 如何用多态

    class Animal:
        def speak(self):
            pass
    class People(Animal):
        def shuo(self):
            print('say hello')
    class Dog(Animal):
        def jiao(self):
            print('汪汪汪')
    class Pig(Animal):
        def chang(self):
            print('哼哼哼')
    obj1=People()
    obj2=Dog()
    obj3=Pig()
    # obj1.speak()
    # obj2.speak()
    # obj3.speak()
    def speak(animal):
        animal.speak()
    speak(obj1)
    speak(obj2)
    speak(obj3)

    python 崇尚鸭子类型

    逗比时刻:

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

    python程序员通常根据这种行为来编写程序。例如,如果想编写现有对象的自定义版本,可以继承该对象

    也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度。

    例1:利用标准库中定义的各种‘与文件类似’的对象,尽管这些对象的工作方式像文件,但他们没有继承内置文件对象的方法

    class Disk:
        def read(self):
            print('Disk read')
    
        def write(self):
            print('Disk write')
    
    
    class Memory:
        def read(self):
            print('Mem read')
    
        def write(self):
            print('Mem write')
    obj1=Disk()
    obj2=Memory()
    
    obj1.read()
    obj2.read()
    View Code
  • 相关阅读:
    linux下shell显示-bash-4.1#不显示路径解决方法
    update chnroute
    An error "Host key verification failed" when you connect to other computer by OSX SSH
    使用dig查询dns解析
    DNS被污染后
    TunnelBroker for EdgeRouter 后记
    mdadm详细使用手册
    关于尼康黄的原因
    Panda3d code in github
    Python实例浅谈之三Python与C/C++相互调用
  • 原文地址:https://www.cnblogs.com/xuecaichang/p/9513183.html
Copyright © 2011-2022 走看看