zoukankan      html  css  js  c++  java
  • 多态实例

    多态

     
    多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
    那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。
     
    Pyhon 很多语法都是支持多态的,比如 len(),sorted(), 你给len传字符串就返回字符串的长度,传列表就返回列表长度。
     
    说白了,多态就是父类去调子类的方法,python无法直接实现,但是可以通过间接实现。
     
    class Animal:
        def __init__(self, name):    # Constructor of the class
            self.name = name
    
        def talk(self):              # Abstract method, defined by convention only
            #只要你调用我就报错
            raise NotImplementedError("Subclass must implement abstract method")
    
    class Cat(Animal):
        def talk(self):
            return 'Meow!'
    class Dog(Animal):
        def talk(self):
            return 'Woof! Woof!'
    d = Dog("d1")
    c = Cat("C1")
    # Animal.talk(d)
    # Animal.talk(c)
    def animal_talk(obj):
        print(obj.talk())
    animal_talk(d)
    animal_talk(c)
     
     
  • 相关阅读:
    TensorFlow学习笔记之四——源码分析之基本操作
    TensorFlow学习笔记之三——适合入门的一些资源
    AW286 选课(背包类树形DP)
    AW303 运输小猫
    AW302 任务安排3
    AW301 任务安排2 (斜率优化DP)
    AW300 任务安排1
    AW311 月之谜
    AW310 启示录
    AW292 炮兵阵地
  • 原文地址:https://www.cnblogs.com/itfat/p/7554275.html
Copyright © 2011-2022 走看看