zoukankan      html  css  js  c++  java
  • 类的多态

    多态

    多态是为了实现接口重用,为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性的正确调用。

    python不直接支持多态,可以间接实现。

    先看一个小例子:

    class Animal:
        def __init__(self,name):
            self.name = name
        def talk(self):
            raise NotADirectoryError('不要调用我这里报错了') #主动抛一个错误
    
    a = Animal('Lily')
    a.talk()   #NotADirectoryError: 不要调用我这里报错了 #写这个的意义是定义一个接口,子类必须重构这个方法
    

     要实现的效果 Animal.talk(实例) 调用实例里的talk方法。

    先添加两个子类

    class Animal:
        def __init__(self,name):
            self.name = name
        def talk(self):
            raise NotADirectoryError('不要调用我这里报错了') #主动抛一个错误
    class Cat(Animal):
        def talk(self):
            return '喵'
    class Dog(Animal):
        def talk(self):
            return '汪'
        
    d =Dog('a')
    Animal.talk(d)  #要实现的效果
    

     解决方案:

    class Animal:
        def __init__(self,name):
            self.name = name
        def talk(self):
            raise NotADirectoryError('不要调用我这里报错了') #主动抛一个错误
    class Cat(Animal):
        def talk(self):
            return '喵'
    class Dog(Animal):
        def talk(self):
            return '汪'
    
    def animal_talk(obj):
        print(obj.talk())
    d =Dog('a')
    c =Cat('a')
    animal_talk(d) #汪
    animal_talk(c) #喵
    
  • 相关阅读:
    FLEX图像工具类-图像变形
    flex中list或Combox中的子项上移下移操作
    flex中socket的使用
    Flex2款简单FLV播放器很经典
    Flex中Css参考示例
    Flex中CursorManager的应用
    关于FLEX的安全沙箱问题
    Flex实现多文件上传之一:前台部分
    Flex与JS通信
    metasploit 常用指令
  • 原文地址:https://www.cnblogs.com/qing-chen/p/7425903.html
Copyright © 2011-2022 走看看