假设我有一个用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中做了类似的事情就会收到警告,所以我想应该有一些"官方"的东西.
我会说这是一个坏主意,除非你为额外的参数提供默认值.你拥有它的方式,如果你创建一个Bar的实例,任何不知道Bar并且只知道你的对象是Foo(它是)的人如果试图使用就会出错mymethod.但如果你这样做def mymethod(self, first_arg, second_arg="some default"),那么即使他们没有通过第二个论点,他们也会没事的.
如果您能够这样做,通常意味着您只是在方法中添加"详细信息",并且不提供这些详细信息的调用仍将以默认方式工作.
如果您无法创建适当的默认参数值,我会将其视为您定义的行为与您需要创建新方法的标志.
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |