zoukankan      html  css  js  c++  java
  • Python 多态

    多态(polymorphism)

    • 含义: 允许将你对象设置成为和一个或更多其它子对象相等的技术, 赋值之后, 父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作. 即: 允许将子类类型的指针赋值给父类类型的指针.
    • 作用: 接口重用
      • 即为了类在继承和派生的时候,保证使用"家谱中任一类的实例的某一属性时的正确调用."
      • 封装可以隐藏实现细节, 使得代码模块化; 继承可以扩展已存在的代码模块(类);它们的目的都是为了--代码重用.
    • Python不直接支持多态, 但是可以间接实现.
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    
    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")  # 实现一调用这个方法就抛错误. 类似java中的throw
    
    
    class Cat(Animal):
        def talk(self):
            return "Meow!"
    
    
    class Dog(Animal):
        def talk(self):
            return "Woof! Woof!"
    
    
    # 实现方法1
    d = Dog('dd')
    c = Cat('cc')
    def animal_talk(obj):  # 如果直接Animal.talk(d)是没法调用talk的, 因为d只是传给了self, 要想执行talk()方法, 还需要一个obj.
        print(obj.talk())
    
    
    animal_talk(d)
    animal_talk(c)
    
    
    # 实现方法2
    # animals = [Cat('Missy'), Dog('Lassie')]
    #
    # for animal in animals:
    #     print(animal.name+':'+animal.talk())
    多态
  • 相关阅读:
    仪器的接口类型
    FIREDAC用于LINUX报头文件FireDAC.VCLUI.Wait找不到
    咏南中间件网站框架
    UNIGUI下载文件
    UNIGUI上传文件
    unigui回车代替TAB
    DELPHI开发LINUX桌面程序
    TDiocpCoderTcpServer 使用
    UNIGUI换版本注意事项
    git 撤销提交的文件
  • 原文地址:https://www.cnblogs.com/cheese320/p/9196968.html
Copyright © 2011-2022 走看看