多态和鸭子类型

    技术2025-02-12  25

    鸭子类型: 多态的概念是应用于Java和C#这一类强类型语言中,在使用一个变量时需要指定这个变量的类型;而Python崇尚"鸭子类型" 动态语言调用实例方法时不检查类型,只要方法存在,参数正确,就可以调用。这就是动态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。 我觉得可迭代对象这个变量的出现就非常重要 比如extend这个方法,只要传入的是可迭代对象就可以使用这个方法

    a = [1,2] b = [3,4] c = (5,6) d = '789' a.extend(b) a.extend(c) a.extend(d) print(a)

    多态: 定义时的类型和运行时的类型不一样,就称为多态。

    class Cat(object): def info(self): print('i am cat') class Dog(object): def info(self): print('i am dog') class Duck(object): def info(self): print('i am duck') #在这里把Cat Dog,Duck开始是当做变量的,直到运行时,实例化时才当做函数处理,当调用info时才会调用呢 animal_list = [Cat,Dog,Duck] for animal in animal_list: animal().info() # 也可以这样做 animal_list = [Cat(), Dog(), Duck()] for animal in animal_list: # animal().info() animal.info()
    Processed: 0.009, SQL: 9