Guido van Rossum wrote:
Anything can be done using metaclasses. __slots__ is not special once the class exists -- it is a set of instructions for the default metaclass to create a specific set of descriptors (and associated storage). Another metaclass could use a different convention (although it may have to set __slots__ to let the base metaclass create the associated storage slots).
My original proposal was to use __slots__ dict values for docstrings in the default metaclass. You said you'd rather not do that because different metaclasses may want to use the dict value for different purposes. But from what you've explained, metaclasses are free to interpret the value of __slots__ in any way they choose. Metaclasses built on top of the default metaclass could translate their __slots__ value to the __slots__ I proposed.
Are optional tuples any better? This wouldn't preclude use of dict values for something else.
class Foo(object): __slots__ = [ 'slot1', ('slot2', 'description'), ('slot3', """description ...continued"""), ]