• 类的多态


    多态

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

    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) #喵
    
  • 相关阅读:
    spring ref &history&design philosophy
    LDAP & Implementation
    REST
    隔离级别
    Servlet Analysis
    Session&Cookie
    Dvelopment descriptor
    write RE validation
    hello2 source anaylis
    Filter
  • 原文地址:https://www.cnblogs.com/qing-chen/p/7425903.html
Copyright © 2020-2023  润新知