Ahh very cool, exactly what I was looking for. I did not know about __builtin__._ Figured it was something funny like that, glad its just a shell thing. Thank you
On Sun, Apr 17, 2011 at 9:07 PM, INADA Naoki <songofaca...@gmail.com> wrote: > Python Interactive shell stores result of an expression to a variable > named '__builtin__._'. > So, ``del _`` may help you. > > This behavior is only on interactive shell. When running script, '_' > is not used and Python > may acts you expect. > > > On Mon, Apr 18, 2011 at 9:56 AM, Charles Solar <charlesso...@gmail.com> > wrote: > > I have a python module written in C++, and the C++ code has a few > instances > > that involve method chaining. I was experimenting with python support > for > > these methods and I found something odd. > > However it seems this is more a python eccentricity than Boost Python, > > consider the following code sample. > > > > class Test(): > > def __init__( self ): > > print "Init" > > def __del__( self ): > > print "Del" > > def foo( self ): > > print "Foo" > > return self > > def bar( self ): > > print "Bar" > > return self > > > > And some sample uses: > > > >>> Test().foo().bar() > > Init > > Foo > > Bar > > <__main__.Test instance at 0x2aef40e33998> > >>> > > > > Note that __del__ was never called, the object still exists somewhere.. > > There is another odd thing though, if I repeat the same line, the > previous > > version gets destroyed and replaced by the new version, but only after > the > > chain methods are done, eg: > > > >>>> Test().foo().bar() > > Init > > Foo > > Bar > > Del <-- Old one, NOT the current instance > > <__main__.Test instance at 0x2b72bc78d998> > >>> > > > > However if I do: > > > > def Tester(): > > Test().foo().bar() > > # To make sure del is not called by the function returning > > while True: > > pass > > > >>> Tester() > > Init > > Foo > > Bar > > Del > > Traceback (most recent call last): > > File "<stdin>", line 1, in <module> > > File "<stdin>", line 4, in Tester > > KeyboardInterrupt > >>> > > > > That time __del__ was called immediately ( as intended ). > > > > Is there something I should be aware of here? Some sort of difference > > between the global instances and ones defined in a function? Can I do > > anything so global instances are cleaned up immediately like they are > inside > > functions? > > > > Thanks > > > > > > > > _______________________________________________ > > Cplusplus-sig mailing list > > Cplusplus-sig@python.org > > http://mail.python.org/mailman/listinfo/cplusplus-sig > > > > > > -- > INADA Naoki <songofaca...@gmail.com> > _______________________________________________ > Cplusplus-sig mailing list > Cplusplus-sig@python.org > http://mail.python.org/mailman/listinfo/cplusplus-sig >
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig