多重继承-如何避免很多空类?

时间:2020-09-21 14:37:21

标签: python structure multiple-inheritance

我想创建一个继承自两个类(ab)及其子类的类。合并的子类将没有唯一的属性或方法,而是从其子类继承所有内容。

我的问题是,我需要为每种子类可能性创建一个空类。如果类am个子类,而类bn个子类,则需要创建m*n个空子类。实际上,m和n小于4,但是创建许多空类似乎不是很Python。

有更好的方法吗?

我已经创建了一个虚拟示例,希望可以解决问题

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)

2 个答案:

答案 0 :(得分:1)

听起来您想要一个班级工厂:

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())

答案 1 :(得分:0)

我不太喜欢的一种可能的解决方案是将各个类作为类中的属性

class BakedFruitItem:
    fruit: Fruit
    baked_item: BakedItem
相关问题