多重继承——如何避免大量空类?

Multiple Inheritance — How to avoid lots of empty classes?

我想创建一个继承自两个 class 的 class(ab)及其 sub-classes。合并后的 child class 将没有独特的属性或方法,而是会继承其 children.

的所有内容

我的问题是我需要为 child class 的每种可能性创建一个空的 class。如果 class am sub-classes 并且 class bn sub-classes 我需要创建m*n 空 sub-classes。实际上 m 和 n 小于 4,但创建大量空 classes 似乎不是很 pythonic。

有更好的方法吗?

我创建了一个虚拟示例,希望能弄清楚问题

class BakedItem:
    pass

class Fruit:
    pass

class Pie(BakedItem):
    def bake(self):
        pass

    def add_pastry(self):
        pass

class Tart(BakedItem):
    def bake(self):
        pass

class Cake(BakedItem):
    def bake(self):
        pass

class Apple(Fruit):
    def flavour(self):
        return "apple"

class Blueberry(Fruit):
    def flavour(self):
        return "Blueberry"

class Blueberry(Fruit):
    def flavour(self):
        return "Blueberry"

class ApplePie(Apple,Pie):
    pass

class AppleCake(Apple,Cake):
    pass

class BlueberryTart(Blueberry,Tart):
    pass

# Etc (lots of empty multiple inheritance classes)

我不太喜欢的一个可能的解决方案是将单个 classes 作为 class

中的属性
class BakedFruitItem:
    fruit: Fruit
    baked_item: BakedItem

听起来你想要一个 class 工厂:

def make_baked_type(fruit, bake):
    class baked_item(fruit, bake):
        pass
    return baked_item

ApplePie = make_baked_type(Apple, Pie)
item = ApplePie()
print(item.flavour())

# or
def make_baked_item(fruit, bake):
    return make_baked_type(fruit, bake)()

item = make_baked_item(Apple, Pie)
print(item.flavour())