On Tuesday 24 November 2009, Chris McDonough wrote:
Off the top of my head, another way to think of this might be to say that the 'dict access' is basically looking up a named utility providing a very generic marker interface, e.g. zope.component.interfaces.IUtility or even just zope.interface.Interface. That way reg['foo'] == getUtility(IUtility, name='foo'). Obviously, assignment would register in the same way.
I'm not sure it's "better", though. :)
That would also be fine, and it would normalize things a bit, although the implementation would be harder and it would result in slower lookups. But if it made folks feel better than inheriting from dict, I'd be +1 on it.
I have not read the entire thread, but Martin's suggestion using zope.interface.Interface makes a lot to sense to me as the dict syntax becomes syntactic sugar and a simplification when desired. Regards, Stephan -- Entrepreneur and Software Geek Google me. "Zope Stephan Richter"