On Mar 3, 1:29 pm, [EMAIL PROTECTED] (Alex Martelli) wrote:
> It would be nice, yes, weren't it for the inevitable irregularity, one
> way or another, caused by the clash between attributes and items.

In thinking about it, I think this might fall under 'we're all
consenting adults here'. I mean, you can shadow the dict constructor
from the toplevel if you're so inclined (or don't know any better).
But you could make it harder to accidentally shadow builtin
attributes:

from warnings import warn
class attrdict(dict):
    __builtins__ = dir(dict)
    def __init__(self, *args, **kwargs):
        dict.__init__(self, *args, **kwargs)
        for k, v in self.items():
            dict.__setattr__(self, str(k), v)
    def __setitem__(self, k, v):
        if k in self.__builtins__:
            warn('shadowing builtin attribute: %s' % k,
RuntimeWarning, 2)
        dict.__setitem__(self, k, v)
        dict.__setattr__(self, str(k), v)
    __setattr__ = __setitem__

a = attrdict([(1,2)], a=3, b=4)
a.update = 'test'

Regards,
Jordan

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

Reply via email to