Status of PEP's?

Emile van Sebille emile at fenx.com
Thu Feb 28 14:23:00 EST 2002


Hmmm... Gerson may have given higher marks to my prior sample, but this
code is a bit cleaner without losing any of the evilness... ;-)

class _dexedItem:
    def __init__(self, sequence, idx, idxname, idxnamespace):
        self.sequence = sequence
        self.idx = idx
        self.idxname = idxname
        self.idxnamespace = idxnamespace
    def __del__(self):
        if self.idxnamespace.has_key(self.idxname):
            self.sequence[self.idx] = self.idxnamespace[self.idxname]
        else:
            self.sequence[self.idx] = None
    def __coerce__(self, other):
        return (self.sequence[self.idx],other)

class dexing:
    def __init__(self, sequence):
        import traceback, sys
        self.sequence = sequence
        self._idxname = traceback.extract_stack()[-2][3].split('in
dexing(')[0].split()[-1]
        frame = sys._getframe(-2)
        if frame.f_locals.has_key(self._idxname):
            self._idxnamespace = frame.f_locals
        else:
            self._idxnamespace = frame.f_globals
    def __getitem__(self, idx):
        if idx < len(self.sequence):
            return _dexedItem(self.sequence, idx, self._idxname,
self._idxnamespace)
        else:
            raise IndexError

mylist = range(5)

for ii in dexing(mylist):
    ii *= 4 #* ii

print mylist

--

Emile van Sebille
emile at fenx.com

---------




More information about the Python-list mailing list