Python关于多继承的看法

前天晚上用python写了个多继承代码,写到后面的时候,突然发现实例方法全乱了,经过一个晚上的查删整改,勉强让代码跑了起来(具体细节就不阐述了)

这篇文章只讨论我对python多继承的看法

 

 

上图

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bi45pyo6ICAX1I=,size_9,color_FFFFFF,t_70,g_se,x_16

 一个多继承问题案例:

派生类B和C继承于超类A,这没问题,好,再往下继承,到了将要继承派生类D的时候的时候,假如派生类继承了两个一样的方法,再往下继承的时候,类内部就产生混乱了(派生类D不知该继承B还是C)

不难看出,菱形继承中也存在数据的二义性,这里的二义性是由于他们间接都有相同的基类导致的。 这种菱形继承除了带来二义性之外,还会有有数据冗余浪费内存空间

这个问题被称之为菱形问题,钻石问题。这样的继承结构会让代码变得非常不可阅读

 

 

既然有这样的问题那么多继承是不是就该被抛弃呢?

我的看法是,多继承可以用,但是要少用,继承结构尽量不要过于复杂。其实我个人连继承都不推荐用,因为代码一用到继承,代码结构就会相应变得复杂,出错可能也会增加。默认情况下,如果多个基类中有相同的方法,越在前面,优先级越高。

为了避免后期没必要的错误,建议基类之间存在重名的属性和方法应该尽量避免。

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值