original) (raw)
(On Wed, May 1, 2013 at 1:33 PM, Antoine Pitrou <solipsis@pitrou.net> wrote:
Ok, I've mixed up the example. But, still, since Season(1) shouldOn Wed, 1 May 2013 13:05:53 -0700
Eli Bendersky <eliben@gmail.com> wrote:
\> On Wed, May 1, 2013 at 11:59 AM, Georg Brandl <g.brandl@gmx.net> wrote:
\>
\> > Am 01.05.2013 20:44, schrieb Antoine Pitrou:
\> > > On Wed, 01 May 2013 10:21:30 -0700
\> > > Ethan Furman <ethan@stoneleaf.us> wrote:
\> > >> We may not want to /completely/ disallow subclassing. �Consider:
\> > >>
\> > >> --> class StrEnum(str, Enum):
\> > >> ... � �'''string enums for Business Basic variable names'''
\> > >> ...
\> > >> --> class Vendors(StrEnum):
\> > >> EnumError: subclassing not allowed
\> > >
\> > > I don't see the point of disallowing subclassing. It sounds like
\> > > a pointless restriction.
\> > >
\> > > However, perhaps the constructor should forbid the returning of a base
\> > > type, e.g.:
\> > >
\> > > class Season(Enum):
\> > > � � spring = 1
\> > >
\> > > class MySeason(Season):
\> > > � � """I look nicer than Season"""
\> > >
\> > > MySeason('spring')
\> > > ...
\> > > ValueError: Season.spring is not a MySeason instance
\> > >
\> > > (what this means is perhaps the subclassing of non-empty enum classes
\> > > should be forbidden)
\> >
\> > That's exactly what's implemented in the ref435 code at the moment.
\> >
\> >
\> It can't be because \_\_call\_\_ is by-value lookup, not by-name lookup.
return the Season.spring singleton, I don't see any reasonable thing
for MySeason(1) to return. Hence the request to raise an exception.
What do you need MySeason for, though? IIUC, you don't ask to allow adding enum values in it, so it only leaves adding extra functionality (methods)? What are the use cases?
Eli