OK, let me approach this from a new direction.
Suppose I define a class that behaves I think
as I stipulated::

class NothingNew:
    a = 0
    def __init__(self):
        self.b = 1
        self.initialized = True
    def __setattr__(self, attr, val):
        if not hasattr(self,'initialized') or hasattr(self, attr):
            self.__dict__[attr] = val
        else:
            raise ValueError

After adding some documentation,
what are the downsides?  (Assume a small
project where everyone knows this has been
done to the NothingNew class.) Anyone who wants the
behavior can keep it.  Anyone who wants to add
stuff to an object just has to delete its
"initialized" attribute.  Anyone who want other
behavior defined in this or a derived class can
just override __init__.  Does this address most
of the (oddly passionate) objections?

Thanks,
Alan Isaac


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

Reply via email to