Michael Spencer wrote:
ISTM that 'bunch' or 'namespace' is in effect the complement of vars i.e., while vars(object) => object.__dict__, namespace(somedict) gives an object whose __dict__ is somedict.

Yeah, I kinda liked this application too, and I think the symmetry would be nice.


Looked at this way, namespace (or bunch) is a minimal implementation of an object that implements the hasattr(object,__dict__) protocol. The effect of the class is to make operations on __dict__ simpler. namespace instances can be compared with any other object that has a __dict__. This differs from the PEP reference implementation which compares only with other bunch instances.

Yeah, I wanted to support this, but I couldn't decide how to arbitrate things in update -- if a dict has a __dict__ attribute, do I update the Namespace object with the dict or the __dict__? That is, what should I do in the following case:


py> class xdict(dict):
...     pass
...
py> d = xdict(a=1, b=2)
py> d.x = 1
py> d
{'a': 1, 'b': 2}
py> d.__dict__
{'x': 1}
py> Namespace(d)

The dict d has both the items of a dict and the attributes of a __dict__. Which one gets assigned to the __dict__ of the Namespace? Do I do:

    self.__dict__ = d

or do I do:

    self.__dict__ = d.__dict__

It was because these seem like two separate cases that I wanted two different functions for them (__init__ and, say, dictview)...

Steve
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to