<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body text="#330033" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">On 5/5/2013 12:21 AM, Ethan Furman
      wrote:<br>
    </div>
    <blockquote cite="mid:51860872.8020800@stoneleaf.us" type="cite">On
      05/04/2013 11:31 PM, Glenn Linderman wrote:
      <br>
      <blockquote type="cite">
        <br>
        x = NamedInt('the-x', 1 )
        <br>
        y = NamedInt('the-y', 2 )
        <br>
        # demonstrate that NamedInt propagates the names into an
        expression syntax
        <br>
        print( repr( x ), repr( y ), repr( x+y ))
        <br>
        <br>
        from ref435 import Enum
        <br>
        <br>
        # requires redundant names, but loses names in the expression
        <br>
        class NEI( NamedInt, Enum ):
        <br>
             x = NamedInt('the-x', 1 )
        <br>
             y = NamedInt('the-y', 2 )
        <br>
        <br>
        print( repr( NEI( 1 )), repr( NEI( 2 )), repr( NEI(1) + NEI(2)))
        <br>
      </blockquote>
      <br>
      Well, my first question would be why are you using named anything
      in an enumeration, where it's going to get another name?
      <br>
    </blockquote>
    <br>
    :)  It is a stepping stone, but consider it a stupid test case for
    now.<br>
    <br>
    <blockquote cite="mid:51860872.8020800@stoneleaf.us" type="cite">But
      setting that aside, if you
      <br>
      <br>
      --> print(NEI.x.__name__)
      <br>
      'x'
      <br>
      <br>
      not 'the-x'.
      <br>
      <br>
      Now let's look for the clues:
      <br>
      <br>
      class Enum...
      <br>
          ...
      <br>
          @StealthProperty
      <br>
          def name(self):
      <br>
              return self._name
      <br>
      <br>
      class NamedInt...
      <br>
          ...
      <br>
          def __name__(self):
      <br>
              return self._name  # look familiar?
      <br>
      <br>
      <br>
      When NamedInt goes looking for _name, it finds the one on `x`, not
      the one on `x.value`.<br>
    </blockquote>
    <br>
    Indeed.<br>
    <br>
    But that isn't the problem of biggest concern.  I changed NamedInt
    to use _intname instead of _name, and it didn't cure the bigger
    problem.<br>
    <br>
    The bigger problem is that the arithmetic on enumeration items,
    which seems like it should be inherited from NamedInt (and seems to
    be, because the third value from each print is a NamedInt), doesn't
    pick up "x" or "y", nor does it pick up "the-x" or "the-y", but
    rather, it somehow picks up the str of the value.<br>
    <br>
    The third item from each print should be the same in all print
    statements, but the first, that deals with the NamedInt directly,
    works, and the others, that are wrapped in Enum, do not.<br>
    <br>
    <br>
  </body>
</html>