Python入门基础篇 No.81 —— super()获得父类定义_多态

Python入门基础篇 No.81 —— super()获得父类定义_多态


文章目录

  • Python入门基础篇 No.81 —— super()获得父类定义_多态
  • 前言
  • 一、super()获得父类定义
  • 二、多态
  • 总结

前生篇:重写__str__()方法_多重继承_MRO()


前言

Python入门基础篇 No.81 —— super()获得父类定义_多态_第1张图片


一、super()获得父类定义

  • 在子类中,如果想要获得父类的方法时,我们可以通过 super()来做。
  • super()代表父类的定义,不是父类对象。

代码演示:

# super()
class A:
    def say(self):
        print('A:', self)
        print('say A')


class B(A):
    def say(self):  # A.say(self) 调用父类的say方法
        super().say()  # 通过super()调用父类的方法
        print('say B')


b = B()
b.say()
------------------------
A: <__main__.B object at 0x000002DA1D5962B0>
say A
say B

Python入门基础篇 No.81 —— super()获得父类定义_多态_第2张图片

二、多态

  • 多态(polymorphism)是指同一个方法调用由于对象不同可能会产生不同的行为。在现实生活中,我们有很多例子。比如:同样是调用人的休息方法,张三的休息是睡觉,李四的休息是玩游戏,程序员是敲代码。同样是吃饭的方法,中国人用筷子吃饭,英国人用刀叉吃饭,印度人用手吃饭。
  • 关于多态要注意以下 2 点:

1.多态是方法的多态,属性没有多态。
2.多态的存在有 2 个必要条件:继承、方法重写。

代码演示:

# 多态
class Animal:
    def shout(self):
        print("动物的叫声")


class Dog(Animal):
    def shout(self):
        print("小狗,汪汪汪")


class Cat(Animal):
    def shout(self):
        print("小猫,喵喵喵")


def animal_shout(a):
    if isinstance(a, Animal):
        a.shout()  # 传入的对象不同,shout方法对应的实际行为也不同。


animal_shout(Dog())
animal_shout(Cat())
----------------------------------
小狗,汪汪汪
小猫,喵喵喵

Python入门基础篇 No.81 —— super()获得父类定义_多态_第3张图片


总结

以上帮各位总结好了,收藏,关注即可查收。

前生篇:重写__str__()方法_多重继承_MRO()


关注下方公众号,免费拿Python学习资料!!!

Python入门基础篇 No.81 —— super()获得父类定义_多态_第4张图片

你可能感兴趣的:(#,基础,多态,编程语言,python,面向对象编程,windows)