[Python-Dev] Enumeration item arguments? (original) (raw)
Eli Bendersky eliben at gmail.com
Tue Apr 30 06:47:56 CEST 2013
- Previous message: [Python-Dev] Enumeration item arguments?
- Next message: [Python-Dev] Enumeration item arguments?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Apr 29, 2013 at 7:30 PM, Philip Jenvey <pjenvey at underboss.org>wrote:
On Apr 29, 2013, at 3:25 PM, Eli Bendersky wrote: > On Mon, Apr 29, 2013 at 2:59 PM, Ethan Furman <ethan at stoneleaf.us> wrote: > In the Planet example we saw the possibility of specifying arguments to enum item init: > > class Planet(Enum): > MERCURY = (3.303e+23, 2.4397e6) > VENUS = (4.869e+24, 6.0518e6) > EARTH = (5.976e+24, 6.37814e6) > MARS = (6.421e+23, 3.3972e6) > JUPITER = (1.9e+27, 7.1492e7) > SATURN = (5.688e+26, 6.0268e7) > URANUS = (8.686e+25, 2.5559e7) > NEPTUNE = (1.024e+26, 2.4746e7) > > def init(self, mass, radius): > self.mass = mass # in kilograms > self.radius = radius # in meters > > Do we want to support this? > > I'm -1, and this is yet another bad sign of conflating enums with classes. If planets want to have attributes and behaviors, let them be normal classes. If they want a PlanetId enum member, that's OK, but there's no need to intermix the two. You may be right about the Planet example, but I wouldn't go that far. Additional metadata on Enum instances can be a handy feature in some cases, like documentation, e.g.: class Protocol(Enum): HOPOPT = 0, "IPv6 Hop-by-Hop Option" ICMP = 1, "Internet Control Message" IGMP = 2, "Internet Group Management" @property def value(self): return self.value[0] @property def description(self): return self.value[1]
Note that I don't object to adding certain behaviors to enums. I'm against taking it too far. One example of taking it too far is special implementation provisions to make enum be more like other classes, complicating the implementation just for this cause.
Eli -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20130429/414c54c5/attachment.html>
- Previous message: [Python-Dev] Enumeration item arguments?
- Next message: [Python-Dev] Enumeration item arguments?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]