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

Unused argument in parent class, that is used in subclass. Bad policy?

我有一个父 class 在私有函数中有一个未使用的参数 _f(i)

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

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

旨在用于 subclasses

中的覆盖方法
class Child:
    def _f(i):
        return range(i, m)

有一个未使用的参数感觉很丑陋,但它使我免于方法 g() 中的代码重复。有没有建议的方法来避免它,或者我应该保持原样?

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

相关问题Abstract methods in Python

看起来objective是重用g函数中的代码,这样第二个for循环的范围可以通过class扩展来改变.更好的解决方案是完全摆脱 f 函数中的 i 参数,并改用 instance 变量。

Parent class

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

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

Child class

class Child:
    def __init__(self, i):
         self.i = i

    def _f():
        return range(self.i, m)

这种方法的一个直接优势是,如果选择添加更多将来需要在函数中使用的输入,则无需更改 f 函数的契约。

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