(original) (raw)


On 9 September 2017 at 01:00, Guido van Rossum <guido@python.org> wrote:
I think it would be useful to write 1-2 sentences about the problem with inheritance -- in that case you pretty much have to use a metaclass,


It is not the case now. I think \_\_init\_subclass\_\_ has almost the same possibilities as a decorator, it just updates an already created class and can add some methods to it.
This is a more subtle question, these two for example would be equivalent:

from dataclass import Data, Frozen

class Point(Frozen, Data):
x: int
y: int

and

from dataclass import dataclass

@dataclass(frozen=True)
class Point:
x: int
y: int


But the problem with inheritance based pattern is that it cannot support automatic addition of \_\_slots\_\_.
Also I think a decorator will be easier to maintain.
But on the other hand I think inheritance based scheme is a bit more readable.

--
Ivan