[Python-Dev] Enumeration item arguments? (original) (raw)
Philip Jenvey pjenvey at underboss.org
Tue Apr 30 04:30:24 CEST 2013
- Previous message: [Python-Dev] Enumeration item arguments?
- Next message: [Python-Dev] Enumeration item arguments?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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]
-- Philip Jenvey
- Previous message: [Python-Dev] Enumeration item arguments?
- Next message: [Python-Dev] Enumeration item arguments?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]