美文网首页
(十二)类<4>多态

(十二)类<4>多态

作者: 费云帆 | 来源:发表于2019-01-17 14:28 被阅读0次

    1.大师的例子:

    # Speaking pets in python
    
    class Pet:
        def speak(self):pass
    
    class Cat(Pet):
        def speak(self):
            print("meow!")
    
    class Dog(Pet):
        def speak(self):
            print("woof!")
    
    def command(pet):
        pet.speak()
    
    pets=[Cat(),Dog()]
    
    for pet in pets:
        command(pet)
    # 结论是Pet类是多余的
    >>>
    meow!
    woof!
    

    大师修改的例子:

    # Speaking pets in python,but without base classes
    
    """class Pet:
        def speak(self):pass"""
    
    class Cat:
        def speak(self):
            print("meow!")
    
    class Dog:
        def speak(self):
            print("woof!")
    
    class Bob:
        def bow(self):
            print("Thank you,thank you!")
        def speak(self):
            print("Hello,welcome to the neighborhand!")
        def drive(self):
            print("Beep,beep!")
    def command(pet):
        pet.speak()
    
    pets=[Cat(),Dog(),Bob()]
    for pet in pets:
        command(pet)
    >>>
    meow!
    woof!
    Hello,welcome to the neighborhand!
    
    """
    不仅去掉了没什么用的类 Pet ,又增加了一个新的类 Bob ,这个类根本不是
    如 Cat 和 Dog 那样的类型,只是它碰巧也有一个名字为 speak() 的方法罢了。但是,也依然
    能够在 command() 函数中被调用。
    这就是Python中的多态特点
    """
    

    相关文章

      网友评论

          本文标题:(十二)类<4>多态

          本文链接:https://www.haomeiwen.com/subject/cjlidqtx.html