Ethan Furman added the comment:

Sample code:
--------------------------------------------------------------------------------
class AutoEnum(enum.Enum):
    """
    Automatically numbers enum members starting from 1.

    Includes support for a custom docstring per member.
    """
    __last_number__ = 0
    def __new__(cls, *args):
        """
        Ignores arguments (will be handled in __init__.
        """
        value = cls.__last_number__ + 1
        cls.__last_number__ = value
        obj = object.__new__(cls)
        obj._value_ = value
        return obj
    def __init__(self, *args):
        """
        Can handle 0 or 1 argument; more requires a custom __init__.
        0  = auto-number w/o docstring
        1  = auto-number w/ docstring
        2+ = needs custom __init__
        """
        if len(args) == 1 and isinstance(args[0], str):
            self.__doc__ = args[0]
        elif args:
            raise TypeError('%s not dealt with -- need custom __init__' % 
(args,))

class AddressSegment(AutoEnum):
    misc = "not currently tracked"
    ordinal = "N S E W NE NW SE SW"
    secondary = "apt bldg floor etc"
    street = "st ave blvd etc"

def huh(self):
    return 'did I show up?'
--------------------------------------------------------------------------------

The 'huh' function, shown above, does *not* show up in a dir of either AutoEnum 
nor AddressSegment, regardless of which class it is defined in -- this is 
because a directory of an Enum class is meant to show ['__class__', '__doc__', 
'__members__', '__module__'] + whatever Enum members have been defined.

However, a directory of an Enum member should show any normal methods* 
available on that member.  Currently, if 'huh' is defined in the final class it 
will show up, but if defined in a superclass it will not.

That is the bug.


* 'normal method' means any method not prefixed by any underscores.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue22506>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to