Working With Enumerations in Python
00:00 Working with Enumerations in Python. When it comes to using enumerations in your code, accessing their members is a fundamental operation to perform. Youâll have three different ways to access enumeration members in Python.
00:16
Letâs say you need to access the north member of the Cardinal direction enumeration on screen.
00:23
This shows how you can access an Enum member using the dot notation, which is pretty intuitive and readable. This line accesses the target member by calling the enumeration with the memberâs value as an argument.
00:37 And a third access method is to use subscript notation. Pythonâs Enumerations offer great flexibility for you to access members. The dot notation is arguably the most commonly used approach in Python code, but the other two approaches can be helpful as well.
00:56 So use the notation that fulfills your specific needs, conventions, and style. Itâs important to note that calling an enumeration with a memberâs value as an argument can make you feel like you are instantiating the enumeration.
01:10 But as you already know, enumerations canât be instantiated.
01:18
Trying to create an instance of an existing enumeration isnât allowed, so you get a TypeError if you attempt to do it. So you mustnât confuse instantiating with accessing members through an enumeration call.
01:32
The members of a Python enumeration are instances of their containing class. During the Enum class parsing, each member is automatically provided with a .name attribute that holds the memberâs name as a string. Members also get a .value attribute that stores the value assigned to the member itself.
01:49
In the class definition, you can access .name and .value as you would do with a regular attribute using the dot notation. Take a look at this example, which simulates a semaphore, commonly known as a traffic light.
02:06
The .name and .value attributes of an Enum member give you direct access to the memberâs name as a string and to the memberâs value, respectively.
02:15 These attributes come in handy when youâre iterating through your enumerations, which youâll explore next. One useful feature of Pythonâs enumerations compared to regular classes is that enumerations are iterable by default.
02:30
Because of this, you can use them in for loops and with other tools that accept and process iterable objects. Pythonâs enumerations support direct iteration over members in the definition order.
02:48
In this example, you use a for loop to iterate over the members of Flavor. Note that members are produced in the same order as they were defined in the class definition.
02:59
When you are iterating over an enumeration, you can access the .name and .value attributes as you go.
03:09 This looks pretty similar to iterating over a dictionary, so if you are familiar with dictionary iteration, then looping over enumerations using this technique will be a straightforward task with many potential use cases.
03:23
Alternatively, enumerations have a special attribute called .__members__ that you can also use for iterating over their members. This attribute holds a dictionary that maps names to members.
03:35 The difference between iterating over this dictionary and the enumeration directly is that the dictionary gives you access to all members of the enumeration, including all of the aliases that you may have.
03:46
Because .__members__ holds a regular dictionary, you can use all the iteration techniques that apply to this built-in data type.
03:58
Some of these techniques include using dictionary methods such as .keys()
04:30
In the next section of the course, youâll look at how to use enumerations in if and match statements.
Become a Member to join the conversation.
