在 Python 中,一个类能否继承自多个基类?请说明其相关机制和注意事项。
考察说明
考查对 Python 多重继承机制及其潜在问题的理解。
回答思路
- 【回答框架 1】Python 支持多重继承,即一个类可以同时继承多个父类,语法为 class C(A, B)。这允许类复用多个父类的属性和方法。
- 【回答框架 2】多重继承的关键机制是方法解析顺序(MRO),Python 使用 C3 线性化算法确定方法查找顺序。可通过 类名.__mro__ 查看,其保证各父类仅出现一次且保持单调性。
- 【回答框架 3】当多个父类定义了同名方法时,实际调用的是 MRO 中最靠前的类的方法。通常应遵循 MRO 顺序,避免混乱。
- 【回答框架 4】实际开发中,多重继承可能引发菱形问题或命名冲突,建议优先使用组合而非继承,或利用 mixin 类设计来降低复杂度。
- 【关键点 1】Python 支持多重继承,语法为 class C(A, B)。
- 【关键点 2】方法解析顺序由 C3 线性化算法确定,可通过 __mro__ 查看。
- 【关键点 3】菱形问题可能导致方法调用歧义,但 MRO 算法保证调用顺序确定。
- 【关键点 4】多重继承可能增加代码复杂度,应谨慎使用,优先组合或 mixin。
- 【易错点 1】忽视 __mro__ 顺序可能导致调用到非预期方法。
- 【易错点 2】多个父类同方法名冲突时,若未清晰设计,易产生逻辑错误。
- 【易错点 3】多重继承层级过深可能降低可读性和维护性。