在Python中更改重写类方法的参数数量是不好的做法?

Gio*_*lia 2 python overriding

假设我有一个用Python编写的类,如下所示:

class Foo(object):
    """My fake class"""

    def mymethod(self, first_arg):
        """original method"""
        pass
Run Code Online (Sandbox Code Playgroud)

现在让我们说我定义了一个扩展前一个类的新类,我想覆盖mymethod:

class Bar(Foo):
    """My new class"""

    def mymethod(self, first_arg, second_arg):
        """overridden method"""
        return first_arg == second_arg
Run Code Online (Sandbox Code Playgroud)

更改重写方法中的参数数量是不好的做法?

编辑:

关于这个,有没有官方的"良好做法"规则?我刚刚看到如果你在pydev中做了类似的事情就会收到警告,所以我想应该有一些"官方"的东西.

Bre*_*arn 5

我会说这是一个坏主意,除非你为额外的参数提供默认值.你拥有它的方式,如果你创建一个Bar的实例,任何不知道Bar并且只知道你的对象是Foo(它是)的人如果试图使用就会出错mymethod.但如果你这样做def mymethod(self, first_arg, second_arg="some default"),那么即使他们没有通过第二个论点,他们也会没事的.

如果您能够这样做,通常意味着您只是在方法中添加"详细信息",并且不提供这些详细信息的调用仍将以默认方式工作.

如果您无法创建适当的默认参数值,我会将其视为您定义的行为与您需要创建新方法的标志.