class BaseClass:
@abstractmethod
def example(self, param1, param2, param3=None):
class ConcreteA(BaseClass):
def example(self, param1, param2, param3):
return True
class ConcreteB(BaseClass):
def example(self, param1, param2):
return False
我将此用作:
obj = self.fetch_obj()
obj.example(param1, param2, param3)
但问题是param3没有在ConcreteB
中实现。。所以。。如果obj
是ConcreteB
,那么我会得到一个错误。
有没有办法“重载”函数定义忽略param3如果它是
ConcreteB
类?如何使param3在抽象类中真正成为可选的,并在这些类的实现中得到反映?你知道吗
不确定这是否有意义?你知道吗
是的,有道理!你知道吗
有一些方法可以做到这一点,其中之一是将
param3
作为可选设置,例如param3 = None
,但这不是一种python方法。你知道吗Pythonic的方法是使用
*args
和**kwargs
概念,让我给你看一些例子!你知道吗举例来说:
以**kwargs为例:
所以你可以看到听起来更像Python,实际上这真的很容易!你知道吗
而不是..:
。。。用途:
相关问题 更多 >
编程相关推荐