Skip to content

Add support for custom initialization in Enum class #7029

@erictraut

Description

@erictraut

Enum classes support custom initialization.

from enum import Enum


class Planet(Enum):
    def __init__(self, value: int, mass: float, radius: float):
        self._value_ = value
        self.mass = mass
        self.radius = radius

    MERCURY = (1, 3.303e23, 2.4397e6)
    VENUS = (2, 4.869e24, 6.0518e6)
    EARTH = (3, 5.976e24, 6.37814e6)
    MARS = (6.421e23, 3.3972e6)  # Should be type checker error
    JUPITER = 5  # Should be type checker error

reveal_type(
    Planet.MERCURY.value
)  # Revealed type should be Literal[1] or int

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions