python3的多继承问题(python,多继承,面向对象,编程语言)

时间:2024-05-10 11:07:31 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    python3%E7%9A%84%E5%A4%9A%E7%BB%A7%E6%89%BF%E9%97%AE%E9%A2%98

#在Python的多继承中,如果子类继承的多个父类中包含了同名的方法,子类在调用时会选择哪个

输出:
Item中的方法,这是一个商品

输出:
Product中的方法 这是一个工业产品
总结:
可见多继承中,父类有同名方法,子类在调用时会选择继承中排在前面的父类方法
拓展:
如果子类也包含同名方法,子类调用同名方法,优先选择自己的方法,这叫做重写,也叫覆盖override

输出:
这是一个鼠标

如果在多继承中子类和父类方法同名了,父类方法被子类方法覆盖了,但是我仍然想要调用父类的方法,那该怎么办?

Python 类相当于类空间,因此Python 类中的方法本质上相当于类空间内的函数。
所以,即使是实例方法, Python 也允许通过类名调用。区别在于: 在通过类名调用实例方法时,Python 不会为实例方法的第一个参数self 自动绑定参数值,而是需要程序显式绑定第一个参数self。这种机制被称为未绑定方法。

再看代码:

输出结果:
这是一个鼠标
Item中的方法 这是一个商品
Product中的方法 这是一个工业产品
这说明通过这种方法所有的info方法都被调用了

使用super函数调用父类的构造方法
因为构造方法是Python内置的特殊方法,在类中很常见,所以在多继承中必须考虑子类怎么调用父类的构造方法:

所以构造方法很特殊,因为他为对象初始化了属性,这些属性在其他方法中被使用,如果在子类继承中不继承父类的init方法,那么复用父类的一些方法,就会出现错误,继承的最大有点就是复用,如果不能复用,那么继承毫无意义,所以我们必须在子类中重写父类的构造方法,继承所有父类的init方法,同时也可以扩展子类的属性。继承父类的init方法有两种:

本文:python3的多继承问题的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:tlinux(centos)下安装和开启curl php扩展下一篇:

6 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18