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