I'm clearly not understanding something about scope in python...  Any help is appreciated<div><br></div><div>In the following script I'm attempting to create 2 Foo objects, for each Foo object I create 2 Bars and add them to Foo's bar array</div>
<div><br></div><div>Something hokey is occurring with the "foo.bars.append(bar)" line such that Foo.bars is treated as a "static" (I know python doesn't have statics)</div><div><br></div><div>I have a workaround using encapsulation for the bars array but I prefer would also like to understand the issue.</div>
<div><br></div><div>TIA,</div><div>Brad</div><div><br></div><div>[SCRIPT]</div><div><div>foos = []</div><div><br></div><div>class Foo:</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>id = 0</div><div>
<span class="Apple-tab-span" style="white-space:pre"> </span>bars = []</div><div><br></div><div>class Bar:</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>id = 0</div><div><br></div><div>for j in range(0, 2):</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>foo = Foo()</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>for i in range(0, 2):</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>bar = Bar()</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span><a href="http://bar.id">bar.id</a> = i</div><div><span class="Apple-tab-span" style="white-space:pre">         </span>foo.bars.append(bar)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>foos.append(foo)</div>
<div><br></div><div>for myFoo in foos:</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>print("foo id: ", myFoo.id)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>for myBar in myFoo.bars:</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>print ("\tbar id: ", myBar.id)</div></div><div><br></div><div>[/SCRIPT]</div><div><br></div><div>[OUTPUT]</div><div><div>python test.py</div><div>
foo id:  0</div><div>        bar id:  0</div><div>        bar id:  1</div><div>        bar id:  0</div><div>        bar id:  1</div><div>foo id:  0</div><div>        bar id:  0</div><div>        bar id:  1</div><div>        bar id:  0</div>
<div>        bar id:  1</div></div><div>[/OUTPUT]</div>