Skip to content

Commit 6064116

Browse files
committed
Enum
1 parent ffa6f8f commit 6064116

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

README.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1273,7 +1273,7 @@ class MyAbcSequence(collections.abc.Sequence):
12731273
return self.a[i]
12741274
```
12751275

1276-
#### Table of required and available special methods:
1276+
#### Table of required and automatically available special methods:
12771277
```text
12781278
+------------+------------+------------+------------+--------------+
12791279
| | Iterable | Collection | Sequence | abc.Sequence |
@@ -1300,19 +1300,14 @@ class <enum_name>(Enum):
13001300
<member_name_1> = <value_1>
13011301
<member_name_2> = <value_2_a>, <value_2_b>
13021302
<member_name_3> = auto()
1303-
1304-
@classmethod
1305-
def get_member_names(cls):
1306-
return [a.name for a in cls.__members__.values()]
13071303
```
13081304
* **If there are no numeric values before auto(), it returns 1.**
1309-
* **Otherwise it returns an increment of last numeric value.**
1310-
1305+
* **Otherwise it returns an increment of the last numeric value.**
13111306

13121307
```python
1313-
<member> = <enum>.<member_name> # Returns a member.
1314-
<member> = <enum>['<member_name>'] # Returns a member or raises KeyError.
1315-
<member> = <enum>(<value>) # Returns a member or raises ValueError.
1308+
<member> = <enum>.<member_name> # Returns a member.
1309+
<member> = <enum>['<member_name>'] # Returns a member or raises KeyError.
1310+
<member> = <enum>(<value>) # Returns a member or raises ValueError.
13161311
name = <member>.name
13171312
value = <member>.value
13181313
```
@@ -1324,6 +1319,13 @@ member_values = [a.value for a in <enum>]
13241319
random_member = random.choice(list(<enum>))
13251320
```
13261321

1322+
```python
1323+
def get_next_member(member):
1324+
members = list(member.__class__)
1325+
index = (members.index(member) + 1) % len(members)
1326+
return members[index]
1327+
```
1328+
13271329
### Inline
13281330
```python
13291331
Cutlery = Enum('Cutlery', ['fork', 'knife', 'spoon'])

index.html

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,7 +1205,7 @@
12051205
</code></pre></div>
12061206

12071207

1208-
<div><h4 id="tableofrequiredandavailablespecialmethods">Table of required and available special methods:</h4><pre><code class="text language-text">+------------+------------+------------+------------+--------------+
1208+
<div><h4 id="tableofrequiredandautomaticallyavailablespecialmethods">Table of required and automatically available special methods:</h4><pre><code class="text language-text">+------------+------------+------------+------------+--------------+
12091209
| | Iterable | Collection | Sequence | abc.Sequence |
12101210
+------------+------------+------------+------------+--------------+
12111211
| iter() | REQ | REQ | yes | yes |
@@ -1228,19 +1228,15 @@
12281228
&lt;member_name_1&gt; = &lt;value_1&gt;
12291229
&lt;member_name_2&gt; = &lt;value_2_a&gt;, &lt;value_2_b&gt;
12301230
&lt;member_name_3&gt; = auto()
1231-
1232-
<span class="hljs-meta"> @classmethod</span>
1233-
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_member_names</span><span class="hljs-params">(cls)</span>:</span>
1234-
<span class="hljs-keyword">return</span> [a.name <span class="hljs-keyword">for</span> a <span class="hljs-keyword">in</span> cls.__members__.values()]
12351231
</code></pre></div>
12361232

12371233
<ul>
12381234
<li><strong>If there are no numeric values before auto(), it returns 1.</strong></li>
1239-
<li><strong>Otherwise it returns an increment of last numeric value.</strong></li>
1235+
<li><strong>Otherwise it returns an increment of the last numeric value.</strong></li>
12401236
</ul>
1241-
<pre><code class="python language-python hljs">&lt;member&gt; = &lt;enum&gt;.&lt;member_name&gt; <span class="hljs-comment"># Returns a member.</span>
1242-
&lt;member&gt; = &lt;enum&gt;[<span class="hljs-string">'&lt;member_name&gt;'</span>] <span class="hljs-comment"># Returns a member or raises KeyError.</span>
1243-
&lt;member&gt; = &lt;enum&gt;(&lt;value&gt;) <span class="hljs-comment"># Returns a member or raises ValueError.</span>
1237+
<pre><code class="python language-python hljs">&lt;member&gt; = &lt;enum&gt;.&lt;member_name&gt; <span class="hljs-comment"># Returns a member.</span>
1238+
&lt;member&gt; = &lt;enum&gt;[<span class="hljs-string">'&lt;member_name&gt;'</span>] <span class="hljs-comment"># Returns a member or raises KeyError.</span>
1239+
&lt;member&gt; = &lt;enum&gt;(&lt;value&gt;) <span class="hljs-comment"># Returns a member or raises ValueError.</span>
12441240
name = &lt;member&gt;.name
12451241
value = &lt;member&gt;.value
12461242
</code></pre>
@@ -1249,6 +1245,11 @@
12491245
member_values = [a.value <span class="hljs-keyword">for</span> a <span class="hljs-keyword">in</span> &lt;enum&gt;]
12501246
random_member = random.choice(list(&lt;enum&gt;))
12511247
</code></pre>
1248+
<pre><code class="python language-python hljs"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_next_member</span><span class="hljs-params">(member)</span>:</span>
1249+
members = list(member.__class__)
1250+
index = (members.index(member) + <span class="hljs-number">1</span>) % len(members)
1251+
<span class="hljs-keyword">return</span> members[index]
1252+
</code></pre>
12521253
<div><h3 id="inline-2">Inline</h3><pre><code class="python language-python hljs">Cutlery = Enum(<span class="hljs-string">'Cutlery'</span>, [<span class="hljs-string">'fork'</span>, <span class="hljs-string">'knife'</span>, <span class="hljs-string">'spoon'</span>])
12531254
Cutlery = Enum(<span class="hljs-string">'Cutlery'</span>, <span class="hljs-string">'fork knife spoon'</span>)
12541255
Cutlery = Enum(<span class="hljs-string">'Cutlery'</span>, {<span class="hljs-string">'fork'</span>: <span class="hljs-number">1</span>, <span class="hljs-string">'knife'</span>: <span class="hljs-number">2</span>, <span class="hljs-string">'spoon'</span>: <span class="hljs-number">3</span>})

0 commit comments

Comments
 (0)