【发布时间】:2022-11-21 17:29:53
【问题描述】:
我有一个带有函数run 的基类。例如:
class A:
@abstractmethod
def run(self, steps):
...
可以为 run 方法定义带有更多参数的类 B。
class B(A):
def run(self, steps, save):
...
使用打字,我可以指定函数是否获取 A 或 B 作为参数。通过指定函数getsA,我告诉我只需要run的基本接口。在指定 B 时表示我需要扩展的。
此设计的目的是声明一个所有子级共享的基本接口,但每个子级都可以有一个扩展 API。
这是其他语言无法做到的。因此我想知道,这是一种反模式吗?这是合法的吗?
【问题讨论】:
-
你在 B 类中使用 super().run(steps) 吗?
-
如果类 A 有一个抽象方法,则不能实例化
-
@LucasM.Uriarte 我没有得到
A的实例,打字说我得到了A的基类。
标签: python inheritance overriding