我有一个带有公共的基类fn。我想让层次系统中的所有类都可以调用,并且它们__call__ 实际上将它们的工作转换为fn,语义类似于Class.__call__ = fn. 以下代码显示了我目前的实现方式。
class Base:
def fn(self, *input):
# ...
__call__ = fn
class Derived(Base):
def fn(self, input):
# ...
__call__ = fn
我知道有一种设计只__call__在 Base 类和 in__call__的函数体中定义 a ,以将其工作转换为fn每个派生类实现自己的fn. 语义就像“继承一个公共接口并从Base实现,并且在这个公共接口中,每个Derived类定义了自己的实现版本”。
但是,其中一些fn具有不同的参数列表,并不总是与 Base 相同,就像我上面展示的情况一样。上面的代码可以工作,但我想肯定有更好的解决方案,没有在层次系统的所有类中重复定义。
那么无论如何要__call__在 Base 类中指定唯一的一次,但使其可用于所有派生类?
牛魔王的故事
九州编程
相关分类