• Python3笔记041


    第7章 面向对象程序设计

    • 7.1 面向对象概述
    • 7.2 类的定义
    • 7.3 类的实例化
    • 7.4 访问限制
    • 7.5 继承
    • 7.6 封装
    • 7.7 多态
    • 7.8 装饰器
    • 7.9 特殊方法

    7.7 多态

    多态(polymorphism),多个对象共用一个接口,形态表现不一样的现象称之为多态。

    class Dog():
    
        def sound(self):
            print("汪汪")
    
    
    class Cat():
    
        def sound(self):
            print("喵喵")
    
    
    class Pig():
    
        def sound(self):
            print("哼哼")
    
    # 这个函数接收一个animal参数,并调用它的sound方法
    def sound_type(animal):
        animal.sound()
    
    
    d = Dog()
    c = Cat()
    p = Pig()
    
    sound(d)
    sound(c)
    sound(p)
    output:
    汪汪
    喵喵
    哼哼
    

    狗、猫、猪都继承了动物类,并各自重写了kind方法。show_kind()函数接收一个animal参数,并调用它的kind方法。可以看出,无论我们给animal传递的是狗、猫还是猪,都能正确的调用相应的方法,打印对应的信息。这就是多态。

    # 另一个多态实例
    class Document():
        def __init__(self, name):
            self.name = name
        def show(self):
            raise NotImplementedError("Subclass must implement father class")
    
    
    class Pdf(Document):
        def show(self):
            return "show pdf content"
    
    
    class Word(Document):
        def show(self):
            return "show word content"
    
    
    def show_document(doctype):
    
        if doctype == "pdf":
            pdf_obj = Pdf(doctype)
            print(pdf_obj.show())
    
        elif doctype == "word":
            word_obj = Word(doctype)
            print(word_obj.show())
    
    show_document("pdf")
    
    output:
    show pdf content
    
  • 相关阅读:
    JSChart_页面图形报表
    hdu 2602(dp)
    hdu 1518(dfs)
    hdu 1716(dfs)
    hdu 1002大数(Java)
    SPOJ 375. Query on a tree (树链剖分)
    poj 1091 跳蚤
    HDU 4048 Zhuge Liang's Stone Sentinel Maze
    HDU Coprime
    HDU Machine scheduling
  • 原文地址:https://www.cnblogs.com/infuture/p/13352849.html
Copyright © 2020-2023  润新知