On 01/20/2014 04:08 PM, Chris Angelico wrote:
On Tue, Jan 21, 2014 at 7:09 AM, Charles Hixson
<charleshi...@earthlink.net> wrote:
#    @note Instances can be created only from existing dicts.

     ##    Class initializer.
     #    @param    ddict    The data dictionary to which this is a read only
     #            access.
     #    @throws    TypeError if ddict is not a dict.
     def __init__ (self, ddict = {}):
         if not isinstance(ddict, dict):
             raise    TypeError("ddict must be a dict.  It is " +
repr(ddict))
         self._ddict    =    ddict
Instead of demanding that a dict (or dict subclass) be passed, why not
simply pass all args on to dict() itself? Is there a reason this won't
work?

def __init__(self, *args, **kwargs):
     self._ddict = dict(*args, **kwargs)

ChrisA
It would work, as long as it would work for dict(), but I have been expecting to use it in situations where it would be useful to have a different access to the dict that would be writeable. So I didn't bother. (Well, and took steps to ensure that it was being used in the manner that I expected. So I'd know to change it if it were appropriate.) It *would* make it more difficult for the class to test it's creation arguments for sanity, though. (One could argue that allowing read only access to an empty dict is violating sanity, but I don't think in any dangerous way.) I do sometimes worry that using isinstance excessively is overly expensive. Perhaps I should wrap them with a test for debug mode.


--
Charles Hixson

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

Reply via email to