在python中重写抽象方法时如何限制参数
在这里,我定义了一个带有两个参数的抽象方法f。我想限制子类,使其具有与超类相同的参数在python中重写抽象方法时如何限制参数,python,Python,在这里,我定义了一个带有两个参数的抽象方法f。我想限制子类,使其具有与超类相同的参数 如何做到这一点?没有任何简单的方法来检查方法签名是否匹配 但是,假设: 您的子类仅派生自相关的抽象类,或者抽象类是其mro中的第一个 抽象类的实现是空的,以消除任何不必要的结果的可能性,例如将新属性绑定到子类, 您可以调用抽象方法,从子类方法传递参数。该调用仅用于强制签名匹配 class F(object): __metaclass__ = abc.ABCMeta @abc.abstractme
如何做到这一点?没有任何简单的方法来检查方法签名是否匹配 但是,假设: 您的子类仅派生自相关的抽象类,或者抽象类是其mro中的第一个 抽象类的实现是空的,以消除任何不必要的结果的可能性,例如将新属性绑定到子类, 您可以调用抽象方法,从子类方法传递参数。该调用仅用于强制签名匹配
class F(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def f(self, a, b): print("F")
class FF(F):
def f(self): print("FF")
f = FF()
f.f()
Python抽象方法与其他方法不同,可以有实现,并且可以通过调用;因此,也许这毕竟是一个用例。相关:
class F(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def f(self, a, b): pass
class FF(F):
def f(self, *args, **kwargs):
super(FF, self).f(*args, **kwargs)
...
f = FF()
f.f()
Traceback (most recent call last):
File "python", line 17, in <module>
File "python", line 12, in f
TypeError: f() takes exactly 3 arguments (1 given)