General Concept

Enumerations (enums) are used to represent a set of named values. They make code more readable and can reduce errors by replacing magic numbers or strings with named constants.

Pseudo-code:

enum Colors {
    RED,
    GREEN,
    BLUE
}

if (currentColor == Colors.RED) {
    // Do something
}

Python’s enum.Enum

Features

Applications & Examples

  1. Basic Enumeration:
     from enum import Enum
        
     class Color(Enum):
         RED = 1
         GREEN = 2
         BLUE = 3
    
  2. Flexible Values:
     class Mood(Enum):
         HAPPY = "smiling"
         SAD = "crying"
    
  3. Auto Value Assignment:
     from enum import auto
        
     class Color(Enum):
         RED = auto()
         GREEN = auto()
         BLUE = auto()
    
  4. Iterating:
     for color in Color:
         print(color.name, color.value)
    
  5. Methods within Enums:
     class Color(Enum):
         RED = 1
         GREEN = 2
         BLUE = 3
        
         def describe(self):
             return f"This color has the value {self.value}"
    

C++ enum

Features

Applications & Examples

  1. Basic Enumeration:
     enum Color {
         RED,
         GREEN,
         BLUE
     };
    
  2. Scoped Enum with Specific Underlying Type:
     enum class Color : char {
         RED = 'r',
         GREEN = 'g',
         BLUE = 'b'
     };
    
  3. Access and Comparisons:
     Color col = Color::RED;
        
     if (col == Color::RED) {
         // Do something
     }
    
  4. Custom “Enum” Using Classes:
     class Color {
     public:
         static const Color Red() { return Color("Red"); }
         // ... Other colors and methods ...
     private:
         explicit Color(std::string value) : value_(value) {}
         std::string value_;
     };