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);
        }
    }

}
2
  • What version of Python are you using? Commented Jul 9, 2014 at 16:57
  • 4
    ummm your example code is in the official docs ... docs.python.org/3/library/enum.html#planet ... (note that enum is only available in python3) Commented Jul 9, 2014 at 16:58

1 Answer 1

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.