多态

作者: 三米板 | 来源:发表于2020-03-15 14:48 被阅读0次

    Python基础教程

    说到多态,我们在别的高级语言中一般会先想到的是接口,或者协议,像java,php中的interface,像oc中的@protocol等,但是在python中,没有明确定义这个概念。我们如何来实现多态呢?
    python中引入一个概念叫做“鸭子类型”
    何为鸭子类型呢?我们用人话做一个定义

    定义

    先看一段代码吧:

    class Car:
        def __init__(self):
            pass
        def run(self):
            pass
    
    class Audi(Car):
        def __init__(self):
            super().__init__()
        def run(self):
            print("Audi run")
    
    class Benz(Car):
        def run(self):
            print("Benz run")
    
    class Bycecle:
        def __init__(self):
            pass
        def run(self):
            print("bycecle run")
    
    def lookRun(car):
        car.run()
    
    audi = Audi()
    benz = Benz()
    bike = Bycecle()
    
    lookRun(audi)
    lookRun(benz)
    lookRun(bike)
    

    举例,假如我们在java中我们会怎么写?
    我们可能会有以下的实现:

    public interface Vehicle{
      public void run();
    }
    public Audi implement Vehicle{
      public void run{
        System.out.println("audi run");
      }
    }
    

    在python中,没有接口的概念,也没有抽象类的概念。
    python中的鸭子类型允许我们使用任何提供所需方法的对象,而不需要迫使它成为一个子类。
    因为python的参数是不带变量类型的,而变量的类型是由编译器去推断的,变量的类型取决于所关联的对象,只要变量中有这个方法,那么在调用处去调用此方法(这里是run()方法),只要变量中存在此方法,就可以当成一个实现此方法的对象去使用。

    方法抽象

    实现

    相关文章

      网友评论

          本文标题:多态

          本文链接:https://www.haomeiwen.com/subject/gixrehtx.html