[Python-Dev] What's a PyStructSequence ?

Martin v. Loewis martin@v.loewis.de
2001年11月27日 22:09:38 +0100


> Hmm, isn't the trick with this type that you can access
> the various elements as attributes *and* using index 
> notation ?

Indeed. In Py 2.2, you can do that two ways:
A) indexmap = {'st_dev':0, 'st_ino':1} # etc
 class StatResult(tuple):
 def __getattr__(self,name):
 return self[indexmap[name]]
B) fields = ['st_dev', 'st_ino'] #etc
 class StatResult(UserList.UserList):
 def __init__(self, dev, ino):
 self.st_dev = dev
 self.st_ino = ino
 def __getattr__(self, name):
 if name=="data":
 return [getattr(self,fname) for fname in fields]
 raise AttributeError, name
 def __setattr__(self, name, value):
 if name=="data":
 raise AttributeError, "data is read-only"
 self.__dict__[name] = value
> Also, why should we hide something useful from the Python programmer
> if it's there anyway ?

Because it has unknown limitations (atleast, they are unknown to me at
the moment; I probably could report them if I searched long enough).
Regards,
Martin

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