Alexander Kapps a écrit :
(snip)
While I personally don't agree with this proposal (but I understand why some people might want it), I can see a reason.

When disallowing direct attribute creation, those typos that seem to catch newcommers won't happen anymore. What I mean is this:

class Foo(object):
    def __init__(self):
        self.somearg = 0

f = Foo()
f.soemarg = 42

---^ There, typo, but still working

It's something like a custom __setattr__ that errors out when trying to assign to an attribute that doesn't exists,

Chicken and egg problem, really : f.__dict__['somearg'] doesn't exists until "self.somearg = 0" is executed.

The "problem" is that Python's methods are only thin wrapper around functions (cf http://wiki.python.org/moin/FromFunctionToMethod) so there's no difference between "self.somearg = 0" in Foo.__init__ and "f.somearg = 42".

IOW, there's no way to implement this proposal without completely changing Python's object model.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to