5

I am a Java developer, but now I am working on a Python project. Is it possible to write an enum whose constructor has attributes?

I would do it this way in Java.

public class Main {

    private enum Planet {
        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);

        private final double mass; // in kilograms
        private final double radius; // in meters

        Planet(double mass, double radius) {
            this.mass = mass;
            this.radius = radius;
        }

        @Override
        public String toString() {
            return super.toString() + " radius: " + radius + ", mass: " + mass;
        }
    }

    public static void main(String[] args) {
        for (Planet planet : Planet.values()) {
            System.out.println(planet);
        }
    }

}
Maksim Dmitriev
  • 5,985
  • 12
  • 73
  • 138

1 Answers1

3

As Joram noted, your Planet example is in the docs.

If you want to know how to add a plain constant to an Enum, check out this answer.

Oh, and Enum has also been backported.

Community
  • 1
  • 1
Ethan Furman
  • 63,992
  • 20
  • 159
  • 237