MST
星途 面试题库

面试题:Python接口编程中的多继承与抽象类结合应用

在Python中,假设你有多个抽象类,例如`Drawable`(包含抽象方法`draw`)、`Rotatable`(包含抽象方法`rotate`),现在要创建一个`ComplexObject`类,它需要同时具备可绘制和可旋转的能力。请说明如何通过多继承抽象类的方式来设计这个`ComplexObject`类,并处理可能出现的方法冲突问题,同时给出具体代码示例。
17.5万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. 设计思路
    • 在Python中,一个类可以继承多个抽象类来获得多种能力。对于可能出现的方法冲突,需要确保不同抽象类中的方法命名尽量清晰,避免命名冲突。如果出现冲突,在子类中重写方法时要根据具体需求明确实现逻辑。
  2. 代码示例
from abc import ABC, abstractmethod


class Drawable(ABC):
    @abstractmethod
    def draw(self):
        pass


class Rotatable(ABC):
    @abstractmethod
    def rotate(self):
        pass


class ComplexObject(Drawable, Rotatable):
    def draw(self):
        print("ComplexObject is being drawn.")

    def rotate(self):
        print("ComplexObject is being rotated.")


# 测试
obj = ComplexObject()
obj.draw()
obj.rotate()

上述代码中,ComplexObject类继承了DrawableRotatable两个抽象类,并实现了它们的抽象方法。在实际应用中,如果不同抽象类中有同名方法,需要在ComplexObject类中仔细实现以满足业务需求。