On Thu, 7 Sept 2023 at 23:51, Daniel Walker <nickel...@gmail.com> wrote:
>
> Perhaps this is a solution in search of a problem but I recently encountered 
> this situation in one of my projects.
>
> I have an object, foo, which, due to the references it contains, I'd rather 
> not keep around longer than necessary.
>
> I use foo to instantiate another object:
>
>     bar = Bar(foo)
>
> bar is free to manipulate foo however it wants and even del it if necessary.  
> However, since the foo name is still around, those resources won't get 
> cleaned up even if bar is done with them.  The simple solution is
>
>     bar = Bar(foo)
>     del foo
>     bar.do_stuff()
>
> I think it would be a nice (and, I hope, painless) addition to the Python 
> grammar to have del return a reference to the underlying object.  That way, I 
> could simply do
>
>     bar = Bar(del foo)
>
> What do y'all think?  Juice not worth the squeeze?
>

If you consider that a namespace is very much like a dictionary, what
you're really doing is a dict.pop() operation - a destructive read. So
it definitely does make sense. However, "del" is a statement, so it
would be a bit awkward to retrofit. Maybe it'd work? It certainly is a
sensible thing to do.

ChrisA
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/5EZ5APBGMJO55CCXWAIGOYW4QTRY2ZC7/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to