Skip to content

Měl by __init__ metatřídy volat super().__init__? #303

@hroncok

Description

@hroncok

Z materiálů o magie:

class IterableMeta(type):
    def __init__(cls, name, bases, namespace):
        cls.items = sorted(n for n in namespace
                           if not n.startswith('__'))

    def __iter__(cls):
        return iter(cls.items)

class SimpleEnum(metaclass=IterableMeta):
    a = 1
    b = 2
    c = 3
    d = 4

Napadlo mě: neměl by IterableMeta.__init__ volat super().__init__(name, bases, namespace)? Pokud to funguje bz něj, je to náhoda, nebo je to předpokládané chování? Dějí se věci, které vytvoří SimpleEnum jakožto třídu v konstruktoru a proto nevadí, že se nezavolá inicializátor?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions