class Body(namedtuple('Body', 'mass radius moons')):

    def __new__(cls, mass, radius, moons=0):
        return super().__new__(cls, mass, radius, moons)

def __getnewargs__(self):
    return self.mass, self.radius, self.moons


class Planet(Body, Enum):
    MERCURY = Body(mass=3.303e+23, radius=2439700.0)
VENUS = Body(mass=4.869e+24, radius=6051800.0)
EARTH = Body(5.976e+24, 3397200.0, moons=1)
Can named arguments be used with Python enums?