python-3.x - 两个类仅在基类上不同

标签 python-3.x

我遇到了一个问题,我需要两个具有相同实现的类,它们之间的唯一区别是不同的名称和基类。这样做的合理方法是什么?

一个明显的解决方案是违反 DRY 并复制如下实现:

class FooA(BaseA):
    def frobnicate(self):
        print("frob")

class FooB(BaseB):
    def frobnicate(self):
        print("frob")

最佳答案

您可以使用多重继承在单个 mixin 类中实现接口(interface)和通用功能。鉴于许多类都明确希望frobnicate,只需实现一个 frobnicator 即可。 Python 从右到左构建类,因此 mixins 位于最左边。

class Frobnicator(object):
    def frobnicate(self):
        print("frob")

class FooA(Frobnicator, BaseA):
    pass

class FooB(Frobnicator, BaseB):
    pass

请注意,mixin 通常不会实现自己的 __init__ - 这是基类的工作。

关于python-3.x - 两个类仅在基类上不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40246814/

相关文章:

python - 特定网站不允许我从他们的页面获取链接

python - 按开始/结束时间戳对数据帧行进行分组

python-3.x - 无效参数错误 : logits and labels must have the same first dimension seq2seq Tensorflow

python - __init__ 方法中的异常处理

python - 如何在Python中的多边形代码中实现这个点?

python - 循环遍历字符串列表并删除特定列表项 (i) 之后的所有项,其中 i 可以是 a 或 b 或 c

python - 设置期间生成常数

string - 连接 2 个列表以获取 (a,d,b,e,c,f) 而不是 (a,b,c,d,e,f)

python - Kivy 错误,[严重] [文本] 无法找到任何有值(value)的文本提供程序 (python 3.6.1) (windows 10)

python - 调用元类基础时出错