{"id":2908,"date":"2021-11-14T07:55:40","date_gmt":"2021-11-14T07:55:40","guid":{"rendered":"https:\/\/www.pythontutorial.net\/?page_id=2908"},"modified":"2025-03-28T02:48:49","modified_gmt":"2025-03-28T02:48:49","slug":"python-enumeration","status":"publish","type":"page","link":"https:\/\/www.pythontutorial.net\/python-oop\/python-enumeration\/","title":{"rendered":"Python Enumeration"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you&#8217;ll learn about Python enumeration and how to use it effectively.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='introduction-to-the-python-enumeration'>Introduction to the Python Enumeration <a href=\"#introduction-to-the-python-enumeration\" class=\"anchor\" id=\"introduction-to-the-python-enumeration\" title=\"Anchor for Introduction to the Python Enumeration\">#<\/a><\/h2>\n\n\n\n<p>By definition, an enumeration is a set of members that have associated unique constant values. Enumeration is often called enum.<\/p>\n\n\n\n<p>Python provides you with the <code>enum<\/code> module that contains the <code>Enum<\/code> type for defining new enumerations. And you define a new enumeration type by <a href=\"https:\/\/www.pythontutorial.net\/python-oop\/python-inheritance\/\">subclassing<\/a> the <code>Enum<\/code> class.<\/p>\n\n\n\n<p>The following example shows how to create an enumeration called <code>Color<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">from<\/span> enum <span class=\"hljs-keyword\">import<\/span> Enum\n\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Color<\/span><span class=\"hljs-params\">(Enum)<\/span>:<\/span>\n    RED = <span class=\"hljs-number\">1<\/span>\n    GREEN = <span class=\"hljs-number\">2<\/span>\n    BLUE = <span class=\"hljs-number\">3<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>How it works.<\/p>\n\n\n\n<p>First, import the <code>Enum<\/code> type from the <code>enum<\/code> module:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">from<\/span> enum <span class=\"hljs-keyword\">import<\/span> Enum<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, define the <code>Color<\/code> class that inherits from the <code>Enum<\/code> type:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Color<\/span><span class=\"hljs-params\">(Enum)<\/span>:<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Third, define the members of the <code>Color<\/code> enumeration:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">RED = <span class=\"hljs-number\">1<\/span>\nGREEN = <span class=\"hljs-number\">2<\/span>\nBLUE = <span class=\"hljs-number\">3<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"note\">Note that the enumeration&#8217;s members are constants. Therefore, their names are in uppercase letters by convention.<\/p>\n\n\n\n<p>In this example, the <code>Color<\/code> is an enumeration. The <code>RED<\/code>, <code>GREEN<\/code>, and <code>BLUE<\/code> are members of the <code>Color<\/code> enumeration. They have associated values 1, 2, and 3. <\/p>\n\n\n\n<p>The type of a member is the enumeration to which it belongs. <\/p>\n\n\n\n<p>The following illustrates that the type of <code>Color.RED<\/code> is the <code>Color<\/code> enumeration:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">print(type(Color.RED))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">&lt;enum <span class=\"hljs-string\">'Color'<\/span>&gt;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The <code>Color.RED<\/code> is also an instance of the <code>Color<\/code> enumeration:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">print(isinstance(Color.RED, Color))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-literal\">True<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>And it has the name and value attributes:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">print(Color.RED.name)\nprint(Color.RED.value)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">RED\n<span class=\"hljs-number\">1<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here&#8217;s the complete script:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">from enum import Enum\n\n\nclass Color(Enum):\n    RED = 1\n    GREEN = 2\n    BLUE = 3\n    \nprint(type(Color.RED))    \nprint(isinstance(Color.RED, Color))\n\nprint(Color.RED.name)\nprint(Color.RED.value)<\/code><\/span><\/pre>\n\n\n<p><a href=\"https:\/\/www.pythontutorial.net\/playground\/?q=ZnJvbSBlbnVtIGltcG9ydCBFbnVtCgoKY2xhc3MgQ29sb3IoRW51bSk6CiAgICBSRUQgPSAxCiAgICBHUkVFTiA9IDIKICAgIEJMVUUgPSAzCiAgICAKcHJpbnQodHlwZShDb2xvci5SRUQpKSAgICAKcHJpbnQoaXNpbnN0YW5jZShDb2xvci5SRUQsIENvbG9yKSkKCnByaW50KENvbG9yLlJFRC5uYW1lKQpwcmludChDb2xvci5SRUQudmFsdWUp\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='membership-and-equality'>Membership and equality <a href=\"#membership-and-equality\" class=\"anchor\" id=\"membership-and-equality\" title=\"Anchor for Membership and equality\">#<\/a><\/h2>\n\n\n\n<p>To check if a member is in an enumeration, you use the <code>in<\/code> operator. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">if<\/span> Color.RED <span class=\"hljs-keyword\">in<\/span> Color:\n    print(<span class=\"hljs-string\">'Yes'<\/span>)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">Yes<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>To compare two members, you can use either <code>is<\/code> or <code>==<\/code> operator. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">if<\/span> Color.RED <span class=\"hljs-keyword\">is<\/span> Color.BLUE:\n    print(<span class=\"hljs-string\">'red is blue'<\/span>)\n<span class=\"hljs-keyword\">else<\/span>:\n    print(<span class=\"hljs-string\">'red is not blue'<\/span>)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">red <span class=\"hljs-keyword\">is<\/span> <span class=\"hljs-keyword\">not<\/span> blue<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Note that a member and its associated value are not equal. The following example returns <code>False<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">if<\/span> Color.RED == <span class=\"hljs-number\">1<\/span>:\n    print(<span class=\"hljs-string\">'Color.RED == 1'<\/span>)\n<span class=\"hljs-keyword\">else<\/span>:\n    print(<span class=\"hljs-string\">'Color.RED != 1'<\/span>)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">Color.RED != <span class=\"hljs-number\">1<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here&#8217;s the complete script:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">from enum import Enum\n\n\nclass Color(Enum):\n    RED = 1\n    GREEN = 2\n    BLUE = 3\n    \nif Color.RED in Color:\n    print('Yes')\n    \nif Color.RED is Color.BLUE:\n    print('red is blue')\nelse:\n    print('red is not blue')    \n    \nif Color.RED == 1:\n    print('Color.RED == 1')\nelse:\n    print('Color.RED != 1')    <\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='enumeration-members-are-hashable'>Enumeration members are hashable <a href=\"#enumeration-members-are-hashable\" class=\"anchor\" id=\"enumeration-members-are-hashable\" title=\"Anchor for Enumeration members are hashable\">#<\/a><\/h2>\n\n\n\n<p>Enumeration members are always <a href=\"https:\/\/www.pythontutorial.net\/python-oop\/python-__hash__\/\">hashable<\/a>. It means that you can use the enumeration members as keys in a <a href=\"https:\/\/www.pythontutorial.net\/python-basics\/python-dictionary\/\">dictionary<\/a> or as elements of a <a href=\"https:\/\/www.pythontutorial.net\/python-basics\/python-set\/\">Set<\/a>. <\/p>\n\n\n\n<p>The following example uses the members of the <code>Color<\/code> enumeration in a dictionary:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">rgb = {\n    Color.RED: <span class=\"hljs-string\">'#ff0000'<\/span>,\n    Color.GREEN: <span class=\"hljs-string\">'#00ff00'<\/span>,\n    Color.BLUE: <span class=\"hljs-string\">'#0000ff'<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='access-an-enumeration-member-by-name-and-value'>Access an enumeration member by name and value <a href=\"#access-an-enumeration-member-by-name-and-value\" class=\"anchor\" id=\"access-an-enumeration-member-by-name-and-value\" title=\"Anchor for Access an enumeration member by name and value\">#<\/a><\/h2>\n\n\n\n<p>The typical way to access an enumeration member is to use the dot notation (.) syntax as you have seen so far:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">Color.RED<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Because the <code>Enum<\/code> implements the <code>__getitem__<\/code> method, you can also use a square brackets <code>[]<\/code> syntax to get a member by its name.<\/p>\n\n\n\n<p>For example, the following uses the square brackets <code>[]<\/code> syntax to get the <code>RED<\/code> member of the <code>Color<\/code> enumeration by its name:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">print(Color&#91;<span class=\"hljs-string\">'RED'<\/span>])<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-20\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">Color.RED<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-20\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Since an enumeration is <a href=\"https:\/\/www.pythontutorial.net\/python-built-in-functions\/python-callable\/\">callable<\/a>, you can get a member by its value. For example, the following return the <code>RED<\/code> member of the <code>Color<\/code> enumeration by its value:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-21\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">print(Color(<span class=\"hljs-number\">1<\/span>))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-21\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-22\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">Color.RED<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-22\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The following expression returns <code>True<\/code> because it accesses the same enumeration member using name and value:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-23\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">print(Color&#91;<span class=\"hljs-string\">'RED'<\/span>] == Color(<span class=\"hljs-number\">1<\/span>))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-23\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-24\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-literal\">True<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-24\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='iterate-enumeration-members'>Iterate enumeration members <a href=\"#iterate-enumeration-members\" class=\"anchor\" id=\"iterate-enumeration-members\" title=\"Anchor for Iterate enumeration members\">#<\/a><\/h2>\n\n\n\n<p>Enumerations are iterables so you can iterate them using a <code>for<\/code> loop. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-25\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">from<\/span> enum <span class=\"hljs-keyword\">import<\/span> Enum\n\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Color<\/span><span class=\"hljs-params\">(Enum)<\/span>:<\/span>\n    RED = <span class=\"hljs-number\">1<\/span>\n    GREEN = <span class=\"hljs-number\">2<\/span>\n    BLUE = <span class=\"hljs-number\">3<\/span>\n    \n<span class=\"hljs-keyword\">for<\/span> color <span class=\"hljs-keyword\">in<\/span> Color:\n    print(color) <\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-25\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pythontutorial.net\/playground\/?q=ZnJvbSBlbnVtIGltcG9ydCBFbnVtCgoKY2xhc3MgQ29sb3IoRW51bSk6CiAgICBSRUQgPSAxCiAgICBHUkVFTiA9IDIKICAgIEJMVUUgPSAzCiAgICAKZm9yIGNvbG9yIGluIENvbG9yOgogICAgcHJpbnQoY29sb3Ip\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-26\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">Color.RED\nColor.GREEN\nColor.BLUE<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-26\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Notice that the order of the members is the same as in the enumeration definition.<\/p>\n\n\n\n<p>Also, you can use the <code>list()<\/code> function to return a list of members from an enumeration:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-27\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">from<\/span> enum <span class=\"hljs-keyword\">import<\/span> Enum\n\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Color<\/span><span class=\"hljs-params\">(Enum)<\/span>:<\/span>\n    RED = <span class=\"hljs-number\">1<\/span>\n    GREEN = <span class=\"hljs-number\">2<\/span>\n    BLUE = <span class=\"hljs-number\">3<\/span>\n    \nprint(list(Color))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-27\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pythontutorial.net\/playground\/?q=ZnJvbSBlbnVtIGltcG9ydCBFbnVtCgoKY2xhc3MgQ29sb3IoRW51bSk6CiAgICBSRUQgPSAxCiAgICBHUkVFTiA9IDIKICAgIEJMVUUgPSAzCiAgICAKcHJpbnQobGlzdChDb2xvcikp\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-28\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">&#91;&lt;Color.RED: <span class=\"hljs-number\">1<\/span>&gt;, &lt;Color.GREEN: <span class=\"hljs-number\">2<\/span>&gt;, &lt;Color.BLUE: <span class=\"hljs-number\">3<\/span>&gt;]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-28\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='enumerations-are-immutable'>Enumerations are immutable <a href=\"#enumerations-are-immutable\" class=\"anchor\" id=\"enumerations-are-immutable\" title=\"Anchor for Enumerations are immutable\">#<\/a><\/h2>\n\n\n\n<p>Enumerations are <a href=\"https:\/\/www.pythontutorial.net\/advanced-python\/python-mutable-and-immutable\/\">immutable<\/a>. It means you cannot add or remove members once an enumeration is defined. And you also cannot change the member values.<\/p>\n\n\n\n<p>The following example attempts to assign a new member to the <code>Color<\/code> enumeration and causes a <code>TypeError<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-29\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">Color&#91;<span class=\"hljs-string\">'YELLOW'<\/span>] = <span class=\"hljs-number\">4<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-29\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Error:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-30\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">TypeError: <span class=\"hljs-string\">'EnumMeta'<\/span> object does <span class=\"hljs-keyword\">not<\/span> support item assignment<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-30\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The following example attempts the change the value of the <code>RED<\/code> member of the <code>Color<\/code> enumeration and causes an <code>AttributeError<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-31\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">Color.RED.value = <span class=\"hljs-number\">100<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-31\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-32\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">AttributeError: can<span class=\"hljs-string\">'t set attribute<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-32\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='inherits-from-an-enumeration'>Inherits from an enumeration <a href=\"#inherits-from-an-enumeration\" class=\"anchor\" id=\"inherits-from-an-enumeration\" title=\"Anchor for Inherits from an enumeration\">#<\/a><\/h2>\n\n\n\n<p>An enumeration cannot be inherited unless it contains no members. The following example works fine because the <code>Color<\/code> enumeration contains no members:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-33\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Color<\/span><span class=\"hljs-params\">(Enum)<\/span>:<\/span>\n    <span class=\"hljs-keyword\">pass<\/span>\n\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">RGB<\/span><span class=\"hljs-params\">(Color)<\/span>:<\/span>\n    RED = <span class=\"hljs-number\">1<\/span>\n    GREEN = <span class=\"hljs-number\">2<\/span>\n    BLUE = <span class=\"hljs-number\">3<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-33\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>However, the following example won&#8217;t work because the <code>RGB<\/code> enumeration has members:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-34\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">RGBA<\/span><span class=\"hljs-params\">(RGB)<\/span>:<\/span>\n    ALPHA = <span class=\"hljs-number\">4<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-34\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Error:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-35\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">TypeError: Cannot extend enumerations<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-35\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='python-enumeration-example'>Python enumeration example <a href=\"#python-enumeration-example\" class=\"anchor\" id=\"python-enumeration-example\" title=\"Anchor for Python enumeration example\">#<\/a><\/h2>\n\n\n\n<p>The following example defines an enumeration called <code>ResponseStatus<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-36\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ResponseStatus<\/span><span class=\"hljs-params\">(Enum)<\/span>:<\/span>\n    PENDING = <span class=\"hljs-string\">'pending'<\/span>\n    FULFILLED = <span class=\"hljs-string\">'fulfilled'<\/span>\n    REJECTED = <span class=\"hljs-string\">'rejected'<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-36\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Suppose you receive a response from an HTTP request with the following string:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-37\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">response = <span class=\"hljs-string\">'''{\n    \"status\":\"fulfilled\"\n}'''<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-37\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>And you want to look up the <code>ResponseStatus<\/code> enumeration by the <code>status<\/code>. To do that, you need to convert the response&#8217;s string to a dictionary and get the value of the status:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-38\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">import<\/span> json\n\ndata = json.loads(response)\nstatus = data&#91;<span class=\"hljs-string\">'status'<\/span>]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-38\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>And then you look up the member of the <code>ResponseStatus<\/code> enumeration by the status&#8217; value:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-39\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">print(ResponseStatus(status))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-39\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-40\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">PromiseStatus.FULFILLED<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-40\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here&#8217;s the complete program:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-41\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">from<\/span> enum <span class=\"hljs-keyword\">import<\/span> Enum\n<span class=\"hljs-keyword\">import<\/span> json\n\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ResponseStatus<\/span><span class=\"hljs-params\">(Enum)<\/span>:<\/span>\n    PENDING = <span class=\"hljs-string\">'pending'<\/span>\n    FULFILLED = <span class=\"hljs-string\">'fulfilled'<\/span>\n    REJECTED = <span class=\"hljs-string\">'rejected'<\/span>\n\n\nresponse = <span class=\"hljs-string\">'''{\n    \"status\":\"fulfilled\"\n}'''<\/span>\n\ndata = json.loads(response)\nstatus = data&#91;<span class=\"hljs-string\">'status'<\/span>]\n\nprint(ResponseStatus(status))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-41\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pythontutorial.net\/playground\/?q=ZnJvbSBlbnVtIGltcG9ydCBFbnVtCmltcG9ydCBqc29uCgoKY2xhc3MgUmVzcG9uc2VTdGF0dXMoRW51bSk6CiAgICBQRU5ESU5HID0gJ3BlbmRpbmcnCiAgICBGVUxGSUxMRUQgPSAnZnVsZmlsbGVkJwogICAgUkVKRUNURUQgPSAncmVqZWN0ZWQnCgoKcmVzcG9uc2UgPSAnJyd7CiAgICAic3RhdHVzIjoiZnVsZmlsbGVkIgp9JycnCgpkYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZSkKc3RhdHVzID0gZGF0YVsnc3RhdHVzJ10KCnByaW50KFJlc3BvbnNlU3RhdHVzKHN0YXR1cykp\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>What if the <code>status<\/code> is not one of the values of the <code>ResponseStatus<\/code> members? then you&#8217;ll get an error. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-42\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">from<\/span> enum <span class=\"hljs-keyword\">import<\/span> Enum\n<span class=\"hljs-keyword\">import<\/span> json\n\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ResponseStatus<\/span><span class=\"hljs-params\">(Enum)<\/span>:<\/span>\n    PENDING = <span class=\"hljs-string\">'pending'<\/span>\n    FULFILLED = <span class=\"hljs-string\">'fulfilled'<\/span>\n    REJECTED = <span class=\"hljs-string\">'rejected'<\/span>\n\n\nresponse = <span class=\"hljs-string\">'''{\n    \"status\":\"ok\"\n}'''<\/span>\n\ndata = json.loads(response)\nstatus = data&#91;<span class=\"hljs-string\">'status'<\/span>]\n\nprint(ResponseStatus(status))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-42\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pythontutorial.net\/playground\/?q=ZnJvbSBlbnVtIGltcG9ydCBFbnVtCmltcG9ydCBqc29uCgoKY2xhc3MgUmVzcG9uc2VTdGF0dXMoRW51bSk6CiAgICBQRU5ESU5HID0gJ3BlbmRpbmcnCiAgICBGVUxGSUxMRUQgPSAnZnVsZmlsbGVkJwogICAgUkVKRUNURUQgPSAncmVqZWN0ZWQnCgoKcmVzcG9uc2UgPSAnJyd7CiAgICAic3RhdHVzIjoib2siCn0nJycKCmRhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlKQpzdGF0dXMgPSBkYXRhWydzdGF0dXMnXQoKcHJpbnQoUmVzcG9uc2VTdGF0dXMoc3RhdHVzKSk%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Error:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-43\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">ValueError: <span class=\"hljs-string\">'ok'<\/span> <span class=\"hljs-keyword\">is<\/span> <span class=\"hljs-keyword\">not<\/span> a valid ResponseStatus<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-43\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>To catch the exception, you can use the <a href=\"https:\/\/www.pythontutorial.net\/python-basics\/python-try-except\/\">try&#8230;except<\/a> statement like the following:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-44\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">from<\/span> enum <span class=\"hljs-keyword\">import<\/span> Enum\n<span class=\"hljs-keyword\">import<\/span> json\n\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ResponseStatus<\/span><span class=\"hljs-params\">(Enum)<\/span>:<\/span>\n    PENDING = <span class=\"hljs-string\">'pending'<\/span>\n    FULFILLED = <span class=\"hljs-string\">'fulfilled'<\/span>\n    REJECTED = <span class=\"hljs-string\">'rejected'<\/span>\n\n\nresponse = <span class=\"hljs-string\">'''{\n    \"status\":\"ok\"\n}'''<\/span>\n\ndata = json.loads(response)\nstatus = data&#91;<span class=\"hljs-string\">'status'<\/span>]\n\n<span class=\"hljs-keyword\">try<\/span>:\n    <span class=\"hljs-keyword\">if<\/span> ResponseStatus(status) <span class=\"hljs-keyword\">is<\/span> ResponseStatus.FULFILLED:\n        print(<span class=\"hljs-string\">'The request completed successfully'<\/span>)\n<span class=\"hljs-keyword\">except<\/span> ValueError <span class=\"hljs-keyword\">as<\/span> error:\n    print(error)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-44\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pythontutorial.net\/playground\/?q=ZnJvbSBlbnVtIGltcG9ydCBFbnVtCmltcG9ydCBqc29uCgoKY2xhc3MgUmVzcG9uc2VTdGF0dXMoRW51bSk6CiAgICBQRU5ESU5HID0gJ3BlbmRpbmcnCiAgICBGVUxGSUxMRUQgPSAnZnVsZmlsbGVkJwogICAgUkVKRUNURUQgPSAncmVqZWN0ZWQnCgoKcmVzcG9uc2UgPSAnJyd7CiAgICAic3RhdHVzIjoib2siCn0nJycKCmRhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlKQpzdGF0dXMgPSBkYXRhWydzdGF0dXMnXQoKdHJ5OgogICAgaWYgUmVzcG9uc2VTdGF0dXMoc3RhdHVzKSBpcyBSZXNwb25zZVN0YXR1cy5GVUxGSUxMRUQ6CiAgICAgICAgcHJpbnQoJ1RoZSByZXF1ZXN0IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknKQpleGNlcHQgVmFsdWVFcnJvciBhcyBlcnJvcjoKICAgIHByaW50KGVycm9yKQ%3D%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-45\" data-shcb-language-name=\"plaintext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">'ok' is not a valid ResponseStatus<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-45\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">plaintext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='summary'>Summary <a href=\"#summary\" class=\"anchor\" id=\"summary\" title=\"Anchor for Summary\">#<\/a><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An enumeration is a set of members that have associated unique constant values.<\/li>\n\n\n\n<li>Create a new enumeration by defining a class that inherits from the <code>Enum<\/code> type of the enum module.<\/li>\n\n\n\n<li>The members have the same types as the enumeration to which they belong.<\/li>\n\n\n\n<li>Use the <code>enumeration[member_name]<\/code> to access a member by its name and <code>enumeration(member_value)<\/code> to access a member by its value.<\/li>\n\n\n\n<li>Enumerations are <a href=\"https:\/\/www.pythontutorial.net\/python-basics\/python-iterables\/\">iterable<\/a>.<\/li>\n\n\n\n<li>Enumeration members are <a href=\"https:\/\/www.pythontutorial.net\/python-oop\/python-__hash__\/\">hashable<\/a>.<\/li>\n\n\n\n<li>Enumerable are immuable.<\/li>\n\n\n\n<li>Cannot inherits from an enumeration unless it has no members.<\/li>\n<\/ul>\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Was this tutorial helpful ?<\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"2908\"\n\t\t\t\tdata-post-url=\"https:\/\/www.pythontutorial.net\/python-oop\/python-enumeration\/\"\n\t\t\t\tdata-post-title=\"Python Enumeration\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"2908\"\n\t\t\t\tdata-post-url=\"https:\/\/www.pythontutorial.net\/python-oop\/python-enumeration\/\"\n\t\t\t\tdata-post-title=\"Python Enumeration\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\t\t\t<input type=\"button\" name=\"wth-submit\" class=\"wth-btn wth-btn-submit\" id=\"wth-submit\" \/>\n\t\t\t<input type=\"button\" class=\"wth-btn wth-btn-cancel\" value=\"Cancel\" \/>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summary: in this tutorial, you&#8217;ll learn about Python enumeration and how to use it effectively. Introduction to the Python Enumeration # By definition, an enumeration is a set of members that have associated unique constant values. Enumeration is often called enum. Python provides you with the enum module that contains the Enum type for defining [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":417,"menu_order":27,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2908","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/2908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/comments?post=2908"}],"version-history":[{"count":1,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/2908\/revisions"}],"predecessor-version":[{"id":7167,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/2908\/revisions\/7167"}],"up":[{"embeddable":true,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/417"}],"wp:attachment":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/media?parent=2908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}