duncan.booth at invalid.invalid
Thu Nov 18 13:58:49 CET 2004
Carlos Ribeiro wrote:
> There are a few requirements that can be imposed to avoid problems.
> First, __names__ is clearly a property, acessed via get & set (which
> allows to trap some errors). It should accept only tuples as an
> argument (not lists) to avoid potential problems with external
> references and mutability of the names. As for the validation, I'm not
> sure if it's a good idea to check for strings. maybe just check if the
> 'names' stored in the tuple are immutable (or perhaps 'hashable') is
Your idea of a __names__ attribute suffers from a problem that the common
use case would be to return a tuple with appropriate names. Right now you
can do that easily in one statement but if you have to assign to an
attribute it becomes messy.
An alternative would be so add a named argument to the tuple constructor so
we can do:
return tuple(('1', '2'), names=('ONE', 'TWO'))
and that would set the __names__ property. If you allow this then you can
make the __names__ property readonly and the problem of introducing a cycle
in the __names__ attributes goes away.
More information about the Python-list