python系列教程246——多态

朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写(有时候有空也会参与编写),所以不如我的人工智能教程风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以看我的人工智能教程https://blog.csdn.net/jiangjunshow/article/details/77338485。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

多态很重要也很玄妙!什么是多态呢?

先给大家来一段传统的官方的解释。大概率你是看不懂的,要有心理准备。“多态(Polymorphism)是面向对象编程的核心特性之一,指同一接口或方法在不同对象中表现出不同行为的能力。其核心思想是通过统一的抽象层屏蔽具体实现差异,从而提升代码的灵活性和可扩展性 。”

python系列教程246——多态_第1张图片

上面的看不懂没关系。下面我用我的方式来让你懂!

老规矩,我们不说那些抽象的概念,直接用简单的实例代码来给你解释。

下面代码定义了三个类。Animal是父类,Dog和Cat是子类,它俩都从Animal那里继承了speak方法,但是两个子类又都重写了这个方法。Dog的speak被重写成输出“Woof”,因为狗狗的叫声是汪汪,而Cat的speak输出的是“Meow”,因为猫是喵喵叫的。

class Animal:
    def speak(self):
        raise NotImplementedError("Subclasses must implement this")

class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

下面我们再定义一个函数,这个函数的作用是输出动物的声音。

def animal_sound(animal: Animal):
    print(animal.speak())

虽然这个函数只有一行固定的代码animal.speak(),但是,如果我们使用多态技术,就可以让这一行代码输出不同的声音,例如可以输出狗的声音,也可以输出猫的声音。下面的代码就是利用多态性来实现这一目标。

# 使用多态
dog = Dog()
cat = Cat()
animal_sound(dog)  # 输出: Woof!
animal_sound(cat)  # 输出: Meow!

同样的代码animal.speak(),却有不同的行为。这就是多态,一套代码有多种形态。当传入的是Dog时,输出的就是狗叫,当传入的是Cat对象时,输出的就是猫叫喵喵Meow。同理,如果你后面再定义一个牛的类,把牛的对象传入,那么animal.speak()输出的就是牛叫。这就是前面那句抽象的话的具体实例——“同一接口或方法在不同对象中表现出不同行为”。

麻烦随手帮我点个不要钱的赞,谢谢!

你可能感兴趣的:(python系列教程,python,开发语言)