diff --git a/README.md b/README.md index 1842723..8f8621b 100644 --- a/README.md +++ b/README.md @@ -1273,7 +1273,7 @@ class MyAbcSequence(collections.abc.Sequence): return self.a[i] ``` -#### Table of required and available special methods: +#### Table of required and automatically available special methods: ```text +------------+------------+------------+------------+--------------+ | | Iterable | Collection | Sequence | abc.Sequence | @@ -1300,19 +1300,14 @@ class (Enum): = = , = auto() - - @classmethod - def get_member_names(cls): - return [a.name for a in cls.__members__.values()] ``` * **If there are no numeric values before auto(), it returns 1.** -* **Otherwise it returns an increment of last numeric value.** - +* **Otherwise it returns an increment of the last numeric value.** ```python - = . # Returns a member. - = [''] # Returns a member or raises KeyError. - = () # Returns a member or raises ValueError. + = . # Returns a member. + = [''] # Returns a member or raises KeyError. + = () # Returns a member or raises ValueError. name = .name value = .value ``` @@ -1324,6 +1319,13 @@ member_values = [a.value for a in ] random_member = random.choice(list()) ``` +```python +def get_next_member(member): + members = list(member.__class__) + index = (members.index(member) + 1) % len(members) + return members[index] +``` + ### Inline ```python Cutlery = Enum('Cutlery', ['fork', 'knife', 'spoon']) diff --git a/index.html b/index.html index e460051..06dea8e 100644 --- a/index.html +++ b/index.html @@ -1205,7 +1205,7 @@ Hello World! -

Table of required and available special methods:

+------------+------------+------------+------------+--------------+
+

Table of required and automatically available special methods:

+------------+------------+------------+------------+--------------+
 |            |  Iterable  | Collection |  Sequence  | abc.Sequence |
 +------------+------------+------------+------------+--------------+
 | iter()     |    REQ     |    REQ     |    yes     |     yes      |
@@ -1228,19 +1228,15 @@ Hello World!
     <member_name_1> = <value_1>
     <member_name_2> = <value_2_a>, <value_2_b>
     <member_name_3> = auto()
-
-    @classmethod
-    def get_member_names(cls):
-        return [a.name for a in cls.__members__.values()]
 
  • If there are no numeric values before auto(), it returns 1.
  • -
  • Otherwise it returns an increment of last numeric value.
  • +
  • Otherwise it returns an increment of the last numeric value.
-
<member> = <enum>.<member_name>                # Returns a member.
-<member> = <enum>['<member_name>']             # Returns a member or raises KeyError.
-<member> = <enum>(<value>)                     # Returns a member or raises ValueError.
+
<member> = <enum>.<member_name>                 # Returns a member.
+<member> = <enum>['<member_name>']              # Returns a member or raises KeyError.
+<member> = <enum>(<value>)                      # Returns a member or raises ValueError.
 name     = <member>.name
 value    = <member>.value
 
@@ -1249,6 +1245,11 @@ member_names = [a.name for a for a in <enum>] random_member = random.choice(list(<enum>))
+
def get_next_member(member):
+    members = list(member.__class__)
+    index   = (members.index(member) + 1) % len(members)
+    return members[index]
+

Inline

Cutlery = Enum('Cutlery', ['fork', 'knife', 'spoon'])
 Cutlery = Enum('Cutlery', 'fork knife spoon')
 Cutlery = Enum('Cutlery', {'fork': 1, 'knife': 2, 'spoon': 3})