创建一个能够定义一组将由基类实现的方法的父类的最佳方法是什么?
问题出现在课程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):
...
答案 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