我想创建一个继承自两个类(a
和b
)及其子类的类。合并的子类将没有唯一的属性或方法,而是从其子类继承所有内容。
我的问题是,我需要为每种子类可能性创建一个空类。如果类a
有m
个子类,而类b
有n
个子类,则需要创建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)
答案 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