
On Tue, 29 Mar 2022 at 04:24, malmiteria <martin.milon@ensc.fr> wrote:
Essentially, when two parent class provide a method with the same name, that's what i call a conflict.
You keep saying this, but I'm still confused: how is that different from the very normal behaviour of overriding a method? What makes one of them a critical feature of inheritance, and the other a conflict that has to be resolved? How do you distinguish conflicts from overrides? My best understanding so far is that you're doing something like: class Pizza(Crust, Topping): ... and then you could have a conflict like this: class StuffedCrust(Crust): def add_cheese(self): ... class ThreeCheeseTopping(Topping): def add_cheese(self): ... which would result in an error when you try to build this pizza: class AllTheCheese(StuffedCrust, ThreeCheeseTopping): ... But the problem with this example is that it's using Crust and Topping as superclasses when they're really not. This would be MUCH better served by something like: class Pizza: def __init__(self, Crust, Topping): self.crust = Crust() self.topping = Topping() And now you don't have a conflict. Please, if this is NOT what you're talking about, can you show us an actual example? Far too many toy examples that don't explain the problem, no realistic (or at least semi-realistic) examples that explain the underlying intention. ChrisA