On Mon, Mar 28, 2022 at 11:13 AM Chris Angelico <rosuav@gmail.com> wrote:
How do you distinguish conflicts from overrides?

I don't really get it either, but I think one of the points is that you would get an error for any conflict, and then you could choose to override if you wanted to -- rather than accidentally overriding.

I've often thought that would be nice -- maybe even as a debug-mode flag or something. In LaTeX, (not a very complex language) there is:

\newcommand
and
\renewcommand

so that you have to explicitly override something, and can't do it by accident.

That does have some appeal, but probably not as a built-in required feature.

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.

or you put add_cheese in a mixin, which would also work. mixins are great when you have multiple features that you need to mix and match in various ways.

-CHB

--
Christopher Barker, PhD (Chris)

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython