Python抽象

时间:2017-09-20 16:01:17

标签: python oop inheritance

创建一个能够定义一组将由基类实现的方法的父类的最佳方法是什么?

问题出现在课程A需要method_X的2个参数时,而课程B需要3个参数用于同一方法。

我该如何解决这个问题?

class SuperClass:
    def method_X(self):
        ...

class A(SuperClass):
    def method_X(self, a, b):
        ...

class B(SuperClass):
    def method_X(self, a, b, c):
        ...

1 个答案:

答案 0 :(得分:3)

您要完成的任务明显违反了Liskov Substitution Principle。此外,为相同的命名方法定义不一致的接口将变得混乱,并将严重限制鸭子类型。尽管如此,如果你想继续使用它,我认为使用kwargs而不是命名参数将达到目的。

class SuperClass:
     def method_x(self, **kwargs):
         ...

class A(SuperClass):
     def method_x(self, **kwargs):
         if 'a' in kwargs:
             # Do something