[OLPC-devel] Re: [sugar] Pygtk and garbage collecting

Robert Staudinger robert.staudinger at gmail.com
Tue Aug 8 12:25:42 EDT 2006


On 8/2/06, Federico Mena Quintero <federico at ximian.com> wrote:

[...]

> The usual idiom  is to have a way to explicitly dispose an object which
> holds a reference to a non-GC resource.  In C# you do
>
>   obj = new SomeObject ();
>   treeview.set_model (obj);
>
>   newobj = new SomeObject ();
>   treeview.set_model (newobj);
>
>   obj.Dispose ();
>
> or use syntactic sugar:
>
>   using (Gdk.Pixbuf pixbuf = new Gdk.Pixbuf ("foo.jpg")) {
>       do_something_with_pixbuf (pixbuf);
>   } /* exiting the "using" block disposes the pixbuf */
>
> This is pretty useful for managed objects which maintain non-managed
> data (file descriptors, memory buffers, database connections, etc.).
>
> Does Python let you do something like this?

It should be possible to export g_object_unref() through the pygobject API.
That would of course be not pythonic at all and not trigger collection
if any other (uncollected) python objects are still holding
references.
(/me waits for pygtk devs to point out more flaws)

- Rob



More information about the Devel mailing list