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

2024-09-30 08:27:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个从两个类(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)

Tags: 方法selfapplereturndefpass子类class
2条回答

我不特别喜欢的一个可能的解决方案是将单个类作为类中的属性

class BakedFruitItem:
    fruit: Fruit
    baked_item: BakedItem

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

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

相关问题 更多 >

    热门问题