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?
Z materiálů o magie:
Napadlo mě: neměl by
IterableMeta.__init__volatsuper().__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říSimpleEnumjakožto třídu v konstruktoru a proto nevadí, že se nezavolá inicializátor?