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

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

    比如:序列类型有多种形态:字符串,列表,元组

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

    import abc
    
    class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
    
        @abc.abstractmethod
    
        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')
    

      

    2.多态性

    多态性的概念:指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为。不同的行为就是指不同的实现,即执行不同的函数。

    定义统一的接口

    >>> def func(animal): #参数animal就是对态性的体现

    ...     animal.talk()

    ...

    >>> people1=People() #产生一个人的对象

    >>> pig1=Pig() #产生一个猪的对象

    >>> dog1=Dog() #产生一个狗的对象

    >>> func(people1)

    say hello

    >>> func(pig1)

    say aoao

    >>> func(dog1)

    say wangwang

    2.1多态性的好处

    1.增加了程序的灵活性

     以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)

     2.增加了程序额可扩展性

     通过继承animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用   

    >>> class Cat(Animal): #属于动物的另外一种形态:猫
    
    ...     def talk(self):
    
    ...         print('say miao')
    
    ...
    
    >>> def func(animal): #对于使用者来说,自己的代码根本无需改动
    
    ...     animal.talk()
    
    ...
    
    >>> cat1=Cat() #实例出一只猫
    
    >>> func(cat1) #甚至连调用方式也无需改变,就能调用猫的talk功能
    
    say miao
    
     
    
    '''
    
    这样我们新增了一个形态Cat,由Cat类产生的实例cat1,使用者可以在完全不需要修改自己代码的情况下。使用和人、狗、猪一样的方式调用cat1的talk方法,即func(cat1)
    
    '''
    
     
    

      

  • 相关阅读:
    Ajax基础:3.Json
    Head First Design Patterns State Pattern
    Head First Design Patterns Template Method Pattern
    Articles For CSS Related
    Head First Design Patterns Decorator Pattern
    代码审查工具
    How To Be More Active In A Group
    Head First Design Patterns Factory Method Pattern
    Head First Design Patterns Composite Pattern
    Tech Articles
  • 原文地址:https://www.cnblogs.com/asaka/p/6758440.html
Copyright © 2011-2022 走看看