Ahhh. so namespaces are scoped, not objects...
You have to keep your objects separate (and make copies when needed), Python
just keeps namespaces (names that refer to an object) scoped according to
it's rules:
http://docs.python.org/ref/naming.html

So if you create an object way up in terms of scope (global), then all
python does is handle what names are available in a given scope to refer to
it. If you want a separate object you have to take care of that yourself.
Efficient. Massive potential for gotchas, especially with some of python's
cleverness in terms of scoping rules.

Sort of. I see some light beginning to dawn ;).

On Jan 21, 2008 9:16 PM, John Morris <[EMAIL PROTECTED]> wrote:

> class Foo:
>   '''Represents a foo'''
>   def __init__(self, name):
>     '''Initializes the person's data'''
>     self.name = name
>     print '(Initializing %s)' % self.name
>     self.ot = Bar(self.name)
>     print '(After Other - %s)' % self.name
>
> class Bar:
>     def __init__(self, name):
>         self.name = name
>         print 'Other', self.name
>         self.name.pop('srv')
>         print 'Other (Changed)', self.name
>
> dict = { "srv" : "why", "goo" : "sticky" }
> foo = Foo(dict)
> print foo.name
>
>
> Why does the pop in the Bar class nuke the srv k & v from Foo.name as
> well?
>
>


-- 
John Morris
[EMAIL PROTECTED]
"Do nothing which is of no use." -- Miyamoto Musashi
<a href="http://profile.mygamercard.net/nerdality";>
<img src="http://card.mygamercard.net/gbar/abyss/nerdality.gif"; border=0>
</a>
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to