indexed property? Can it be done?

Ian Kelly ian.g.kelly at gmail.com
Tue May 8 12:49:33 EDT 2012


On Tue, May 8, 2012 at 10:30 AM, Charles Hixson
<charleshixsn at earthlink.net> wrote:
> That depends on what you're doing.  For many, perhaps most, purposes I would
> agree.  Not for this one.  And I couldn't use an internal dict, as the order
> in which the items of the sub-lists occur is significant.  The sub-lists
> need to be lists, though they could be separated out as named variables
> (which would be lists).

It sounds like a collections.OrderedDict should do what you need. In
the cases where you really need to have a list of keys or values, you
can just use the .keys() and .values() methods.
> The ActiveState recipe *might* do what I want.  I honestly can't tell after
> a brief study.  But it's much too complex to be a worthwhile choice.  I was
> hoping that I'd just overlooked one of the standard features of Python.

What do you find complex about it? The two class definitions are
something you would put in a library module to be imported. The rest
is just example / test code. The actual usage is no more complex than
a regular property:
class Node(object):
 def __init__(self, nodeId, key, value, downRight, downLeft, parent):
 dirty = True
 dlu = utcnow()
 self.node = [nodeId, downLeft, [key], [value],
[downRight], parent, dirty, dlu]
 @itemproperty
 def key(self, index):
 return self.node[2][index]
 @itemproperty
 def value(self, index):
 return self.node[3][index]
And of course you could also add setters and/or deleters if desired.


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /