Python面向对象编程深入解析
1. 多重继承与Mixin类
在Python编程中,多重继承是一个需要谨慎使用的特性。某些类层次结构可能会被Python以 TypeError 拒绝,例如:
class X(object): pass
class Y(X): pass
class Z(X,Y): pass # TypeError.
# Can't create consistent method resolution order
在这个例子中,方法解析算法拒绝类 Z ,因为它无法确定基类的合理顺序。在继承列表中,类 X 出现在类 Y 之前,所以必须先检查 X 。然而,类 Y 更特殊,因为它继承自 X 。因此,如果先检查 X ,就无法解析 Y 中的特殊方法。在实践中,这些问题很少出现,如果出现,通常表明程序存在更严重的设计问题。
一般来说,在大多数程序中最好避免使用多重继承。不过,有时会用它来定义所谓的Mixin类。Mixin类通常定义一组方法,这些方法旨在“混入”其他类中,以添加额外的功能(几乎就像宏一样)。例如之前例子中的 DepositCharge 和 WithdrawCharge 类,它们为包含它们作为基类之一的类添加了新方法,如 de
超级会员免费看
订阅专栏 解锁全文
1003

被折叠的 条评论
为什么被折叠?



