Kiss György added the comment:
I found one thing which you can't do subclassing Enum what you can with
metaclasses:
enforcing type checking at class creation time. Values are passed to __new__ as
positional arguments, so it's impossible to tell the difference between these
two:
class SingleValue(MultiVAlueEnum):
one = 1, 'one'
two = 2
class Tuple(MultiVAlueEnum):
one = 1, 'one'
two = 2,
because in both cases (2,) would be passed. It's not a big deal, but "Explicit
is better than implicit." and also I would like to avoid typos, which I often
make like this:
class StrValues(MultiValueEnum):
one = ('One'
'one')
two = ('two',
'Two')
In this case, the first member would be accepted as 'Oneone' instead of ('One',
'one') and I see no way to check that without metaclasses. Do you?
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue22339>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com