I just read this inside of the C# reasoning, and this pretty much kinda says, look its to difficult...<br><br>This is a good reason "Another approach is to push a scope and make the property hide the
local variable, but then there's no way to refer to the local without
adding some escape syntax."<br><br>bascially, they added the dot syntax to acces variables that are intended to be directed towards object namespace.  Which I do agree helps with disambiguation, <br><br>foo = 32<br>

interrogate(test_ns):<br>  print .foo<br>  print foo<br><br>But don't find all that paletable.  My thoughts on this would be to cover the parent local namespace, and even globals with your object, the object gets it first everytime, and if it raised an exception, then the normal method would be implemented.  If it were important to have a variable that was named the same, then access it outide the interrogate block or otherwise..  But if you were a developer and working on writing a program, knowing you wanted to use interrogate, then wouldn't you be wise to choose different variable names?  I think I would.<br>

<br>Also doing this is kinda kludgy feeling to me..<br><br>function(args).dict[index][index].a = 21<br>function(args).dict[index][index].b = 42<br>function(args).dict[index][index].c = 63<br><br>write this:<br><br>ref = function(args).dict[index][index]<br>

ref.a = 21<br>ref.b = 42<br>ref.c = 63<br><br>even though it is optimised, and works well, this feels more like the programmer adapting to the environment instead of the environment working for the programmer.<br>