I have an enum defined like this:
def enum(**enums): return type('Enum', (), enums) Status = enum( STATUS_OK=0, STATUS_ERR_NULL_POINTER=1, STATUS_ERR_INVALID_PARAMETER=2)
I have a function that returns status as Status
enum. How can I get the name of the enum value, and not just value?
>>> cur_status = get_Status() >>> print(cur_status) 1
I would like to get STATUS_ERR_NULL_POINTER
, instead of 1
Description. The java.lang.Enum.name() method returns the name of this enum constant, exactly as declared in its enum declaration.
You'd have to loop through the class attributes to find the matching name:
name = next(name for name, value in vars(Status).items() if value == 1)
The generator expression loops over the attributes and their values (taken from the dictionary produced by the vars()
function) then returns the first one that matches the value 1
.
Enumerations are better modelled by the enum
library, available in Python 3.4 or as a backport for earlier versions:
from enum import Enum class Status(Enum): STATUS_OK = 0 STATUS_ERR_NULL_POINTER = 1 STATUS_ERR_INVALID_PARAMETER = 2
giving you access to the name and value:
name = Status(1).name # gives 'STATUS_ERR_NULL_POINTER' value = Status.STATUS_ERR_NULL_POINTER.value # gives 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With