[Python-Dev] Accessing globals without dict lookup

Guido van Rossum guido@python.org
2002年2月08日 16:19:54 -0500


> Guido van Rossum writes:
> > Oops, I was indeed confused. I think I meant this:
> > 
> > def keys(self):
> > return [k for k, c in self.__dict.iteritems() if c.objptr is not NULL]
>> Was I not clear, or am I missing something entirely?

I'm guessing both. ;-)
> keys() needs
> *no* special treatment, but items() and values() do:
>> class celldict(object):
> ...
>> def keys(self):
> return self.__dict.keys()

Wrong. keys() *does* need special treatment. If c.objptr is NULL,
the cell exists, but keys() should not return the corresponding key.
This is so that len(x.keys()) == len(x.values()), amongst other
reasons!
> def items(self):
> return [k, c.objptr for k, c in self.__dict.iteritems()
> if c.objptr is not NULL]
>> def values(self):
> return [c.objptr for c in self.__dict.itervalues()
> if c.objptr is not NULL]

Yes, these are correct.
--Guido van Rossum (home page: http://www.python.org/~guido/)

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