父类中未使用的参数,用于子类。糟糕的政策?

时间:2017-08-16 15:37:32

标签: design-patterns language-agnostic software-design

我有一个父类,在私有函数_f(i)

中有一个未使用的参数
class Parent:
    def _f(i):
        return range(m)

    def g():
        for i in range(n)
            for j in _f(i)
                # do something

用于子类中的overriden方法

class Child:
    def _f(i):
        return range(i, m)

有一个未使用的参数感觉很难看,但它使我免于方法g()中的代码重复。是否有任何建议的方法来避免它,或者我应该保留原样?

2 个答案:

答案 0 :(得分:1)

看起来目标是重用{key: 1, a: 1, b: 2} 函数中的代码,以便可以通过类扩展更改第二个g循环的范围。更好的解决方案是完全删除for函数中的i参数,而使用实例变量。

家长班

f

儿童课

class Parent:
    def _f():
        return range(m)

    def g():
        for i in range(n)
            for j in _f()
                # do something

这种方法的一个直接优势是,如果选择在将来添加需要在函数中使用的更多输入,则class Child: def __init__(self, i): self.i = i def _f(): return range(self.i, m) 函数的合同不需要更改。

注意:此问题已被标记为语言无关。上述代码中的任何语法错误都是故意的。

答案 1 :(得分:0)

在一些面向OOP的语言中,如Java或C#,有一些抽象方法可以将实现委托给子类,但是在python中使用它们的唯一方法是使用abc包,另一种方法是它将与接口。

相关问题Abstract methods in Python