title: Is it a bad practice to use enums with non-integer types in python?
body: <p><strong>Suppose I have a class which extends <code>Enum</code>, named foo; However, instead of using integers for each item, I use strings</strong></p>
  
  <pre><code>from enum import Enum
  class foo (Enum):
      foo = "Hello"
      bar = ", "
      foobar = "world"
      barfoo = "!"
  </code></pre>
  
  <p><strong>When compiling, the system will throw no errors, and happily treat this class as a normal enum.</strong> As per why anyone would want to do this, it's very useful if you want to link each name to a data structure, like a dict. Take this as an example:</p>
  
  <pre><code>from enum import Enum
  class foo (Enum):
      foo = {"text" : "Hello", "meaning" : "hello"}
      bar = {"text" : ", ", "meaning" : "comma"}
      foobar = {"text" : "world", "meaning" : "world"}
      barfoo = {"text" : "!", "meaning" : "exclamation"}
  </code></pre>
  
  <p><strong>Well, maze, why not just use a normal class then?</strong>
  Well, its very useful to be able to store this information as an enum, for quick comparison of type. For example, <code>x = {"name" : "foo", "type" : foo.foo}</code> can be easily checked for type with <code>if x[type] is foo.foo</code>.</p>
  
  <p><strong>Is this a "bad practice"? By that, I mean:</strong></p>
  
  <ol>
  <li>Is this an intended use of <code>Enum</code>?</li>
  <li>If I took out the <code>(Enum)</code> from <code>class foo (Enum):</code>, would there be any efficiency difference when comparing?</li>
  <li>Is there a better way to do what I am wanting to do?</li>
  </ol>