Python-在子类方法定义中指定精确参数
Python中是否有任何方法可以在父类方法中指定变量(未知)数量的参数,并在其子类中指定实际(实)参数,而不会得到警告?下面是一个让我理解的示例(我使用的是Python 3.5): 已更新Python-在子类方法定义中指定精确参数,python,python-3.x,inheritance,warnings,variadic-functions,Python,Python 3.x,Inheritance,Warnings,Variadic Functions,Python中是否有任何方法可以在父类方法中指定变量(未知)数量的参数,并在其子类中指定实际(实)参数,而不会得到警告?下面是一个让我理解的示例(我使用的是Python 3.5): 已更新 我只在我的IDE Pycharm 4.5中收到警告,这是由检查“类必须实现所有抽象方法”引起的。您可以在子类中尝试以下操作: class SubClass1(SuperClass): def method(self, *args): try: one, two,
我只在我的IDE Pycharm 4.5中收到警告,这是由检查“类必须实现所有抽象方法”引起的。您可以在子类中尝试以下操作:
class SubClass1(SuperClass):
def method(self, *args):
try:
one, two, three = args
except ValueError:
print('bad number of args')
话虽如此,如果您想在IDE中实现代码完成功能,这可能没有帮助。最重要的信息不是您收到了警告,它什么也没说。最重要的是你收到的一条信息,它描述了问题所在。您应该将该警告消息添加到问题中。对不起,我忘记附加警告错误:)。由于我不知道如何更新这个问题,我将注释粘贴到这里:
方法“subclass 1”的签名。method()与类“SuperClass”中基方法的签名不匹配。
。谢谢@Dawiderency!谢谢通过单击问题下方的edit
链接,您可以简单地更新您的问题:)您是否缺少超类中的pass
语句?我在使用Python 3.5.0时没有收到任何警告。这个警告是来自Python命令行还是您的IDE?我在Python3.4.3中也没有收到任何警告。问题是我正在创建一个库,我不希望库的用户每次从超类继承时都检查参数的数量。但是非常感谢,我没有想到这个解决方案,它非常酷:D。
Signature of method 'SubClass1.method() does not match signature of base method in class 'SuperClass'
class SubClass1(SuperClass):
def method(self, *args):
try:
one, two, three = args
except ValueError:
print('bad number of args')