title: Python enum.Enum creates alias instead of new value
body: <p>I just noticed a very weird behavior of Enum+defaultdict in pyhton. I define an enum like this, which collects some default dictionaries:</p>
  
  <pre><code>from enum import Enum
  from collections import defaultdict
  
  class A(Enum):
       a = defaultdict(lambda: 1)
       b = defaultdict(lambda: 2)
  </code></pre>
  
  <p>Then, when I look at what's inside A:</p>
  
  <pre><code>In [11]: A.a
  Out[11]: &lt;A.a: defaultdict(&lt;function A.&lt;lambda&gt; at 0x7f773f03b510&gt;, {})&gt;
  
  In [12]: A.b
  Out[12]: &lt;A.a: defaultdict(&lt;function A.&lt;lambda&gt; at 0x7f773f03b510&gt;, {})&gt;
  </code></pre>
  
  <p>So <code>A.b</code> is just an alias to <code>A.a</code>. This looks a lot like a bug to me, even if there probably is some good reason behind. Any idea?</p>
  
  <p><strong>Addendum</strong></p>
  
  <p>Since it popped up in the comments, a note on why one would like to put a dict in an Enum. I find that it is very often useful to group constants into namespaces, so that one may access values as <code>A.a.constant1</code>, <code>A.b.constant1</code>, etc. At the moment, trying to do so with Enums raises an <code>AttributeError</code>. Of course, one could do something like:</p>
  
  <pre><code>class A:
      class a(Enum):
          constant1 = 1
      class b(Enum):
          constant1 = 2
  </code></pre>
  
  <p>However, this does not leverage on the capabilities of Enum (iteration, access via <code>__getitem__</code> etc).</p>