• 多态


    python是一门动态语言,严格的来说python不存在多态。

    def bark(animal):
        animal.bark()
    

    上面的函数bark接收一个对象,并调用了对象的bark方法。对于python来说只要传入的对象有bark方法这个函数就可以执行,而不必去检查这个对象的类型。

    class Animal:
        def bark(self):
            print('嗷嗷叫!')
    
    class Dog(Animal):
        def bark(self):
            print('汪汪叫!')
    
    class Cat(Animal):
        def bark(self):
            print('喵喵叫!')
    
    class Duck(Animal):
        def bark(self):
            print('嘎嘎叫!')
    
    dog = Dog()
    cat = Cat()
    duck = Duck()
    
    bark(dog)
    bark(cat)
    bark(duck)
    

    输出:

    汪汪叫!
    喵喵叫!
    嘎嘎叫!
    

    上面的案例中dogDog类型的一个实例,同时它也是Animal的一个实例。但是反过来不成立。

    对于静态语言来说函数bark如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,否则,不能调用bark

    dogcatduck都是Animal类型,但是它们执行bark后的输出又各不相同。一个类型多种形态,这就是多态。

    对于python这样的动态语言来说,则不需要传入的一定是Animal类型,只要它具有一个bark方法就可以了。

    class SomeClass:
        def bark(self):
            print('随便叫!')
    sc = SomeClass()
    bark(sc)
    

    输出:

    随便叫!
    
  • 相关阅读:
    Dynamic导出解决方案修改其XML信息
    子网格
    官方文档
    ADFS登录页面自定义
    ADFS设置Tokn生命周期
    特征工程
    Pandas
    分类决策树
    Python基本知识
    机器学习的基本概念
  • 原文地址:https://www.cnblogs.com/superwuchaofan/p/16635770.html
Copyright © 2020-2023  润新知