网络编程
位置:首页>> 网络编程>> Python编程>> python支持多继承吗

python支持多继承吗

作者:silencement  发布时间:2023-10-14 11:22:48 

标签:python,多继承

大部分面向对象的编程语言(除了C++)都只支持单继承,而不支持多继承,为什么呢?因为多继承不仅增加编程复杂度,而且容易导致莫名其妙的错误。

Python虽然语法上支持多继承,但是却不推荐使用多继承,而是推荐使用单继承,这样可以保证编程思路更清晰,也可以避免不必要的麻烦。

当以一个子类有多个直接父类时,该子类会继承得到所有父类的方法,但是如果其中有多个父类包含同名方法会发生什么?此时排在前面的父类中的方法会“遮蔽”后面父类中的方法。

栗子如下:


#coding=utf-8
class Item:
 def info(self):
   print("Item中的方法",'这是一个商品')

class Product:
 def info(self):
   print('Product中的方法','这是一个能赚钱的商品')

class Computer(Item,Product):
 pass

c = Computer()
c.info()

控制台打印如下:

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

解释:控制台打印的是Item类中的方法,所以说子类所继承的父类中的方法,如果存在同名,前面的会“遮蔽”后面的即前面的直接父类优先级高于后面的。

Python关于多继承知识点扩展:

大部分面向对象的编程语言(除了C++)都只支持单继承,而不支持多继承,为什么呢?因为多继承不仅增加编程复杂度,而且容易导致莫名其妙的错误。

Python虽然语法上支持多继承,但是却不推荐使用多继承,而是推荐使用单继承,这样可以保证编程思路更清晰,也可以避免不必要的麻烦。

当以一个子类有多个直接父类时,该子类会继承得到所有父类的方法,但是如果其中有多个父类包含同名方法会发生什么?此时排在前面的父类中的方法会“遮蔽”后面父类中的方法。

栗子如下:


#coding=utf-8
class Item:
 def info(self):
   print("Item中的方法",'这是一个商品')

class Product:
 def info(self):
   print('Product中的方法','这是一个能赚钱的商品')

class Computer(Item,Product):
 pass

c = Computer()
c.info()

解释:控制台打印的是Item类中的方法,所以说子类所继承的父类中的方法,如果存在同名,前面的会“遮蔽”后面的即前面的直接父类优先级高于后面的。

来源:https://www.py.cn/faq/python/12505.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com