Object's nesting scope
gagsl-py2 at yahoo.com.ar
Sun Aug 30 01:22:03 CEST 2009
En Sat, 29 Aug 2009 04:34:48 -0300, zaur <szport at gmail.com> escribió:
> On 29 авг, 08:37, "Gabriel Genellina" <gagsl-... at yahoo.com.ar> wrote:
>> En Fri, 28 Aug 2009 15:25:55 -0300, zaur <szp... at gmail.com> escribió:
>> > On 28 авг, 16:07, Bruno Desthuilliers <bruno.
>> > 42.desthuilli... at websiteburo.invalid> wrote:
>> >> zaur a écrit :
>> >> > Ok. Here is a use case: object initialization.
>> >> Err... Looks like you really should read the FineManual(tm) -
>> >> specifically, the parts on the __init__ method.
>> > What are you doing if 1) classes Person and Address imported from
>> > foreign module 2) __init__ method is not defined as you want?
>> Welcome to dynamic languages! It doesn't matter *where* the class was
>> defined. You may add new attributes to the instance (even methods to
>> the class) at any time. [...4 examples...]
> I know about these ways of object initializing. What I said is about
> using object's dictionary as nested scope in code block. Object
> initialization is just one use case.
> So we say about different things.
Well, you asked how to proceed in certain cases and I showed several ways
it can be done right now, without requiring a new scope. You'll have to
think of another use case.
Attribute lookup is explicit in Python, and that's a very good thing. If
you follow the python-ideas thread posted earlier, you'll see the kind of
problems an implicit attribute lookup would cause. The "with" statement is
necesary (and a good thing) in Pascal, but not in Python.
Zope2 departs from this explicitness: it has a <dtml-with> construct
(similar to what you propose), and I hate it profoundly every time I have
to edit a DTML file - I can never tell *where* an attribute comes from.
Another related "feature" is acquisition, a stack of namespaces where
objects "inherit" attributes from their containers. Same thing, a complete
waste of time every time I have to track a bug.
Unless you can find a very compeling use case, I don't think this feature
will become part of the language anytime soon...
More information about the Python-list