codehaus


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Change in behaviour Python 3.7 > 3.8


You might find this helpful.

https://docs.python.org/3/reference/datamodel.html

Thank you ??

On Thu, Feb 6, 2020, 6:29 PM Frank Millman <frank at chagford.com> wrote:

> Hi all
>
> I have noticed a change in behaviour in Python 3.8 compared with
> previous versions of Python going back to at least 2.7. I am pretty sure
> that it is not a problem, and is caused by my relying on a certain
> sequence of events at shutdown, which of course is not guaranteed.
> However, any change in behaviour is worth reporting, just in case it was
> unintended, so I thought I would mention it here.
>
> I have a module (A) containing common objects shared by other modules. I
> have a module (B) which imports one of these common objects - a set().
>
> Module B defines a Class, and creates a global instance of this class
> when the module is created. This instance is never explicitly deleted,
> so I assume it gets implicitly deleted at shutdown. It has a __del__()
> method (only for temporary debugging purposes, so will be removed for
> production) and the __del__ method uses the set() object imported from
> Module A.
>
> This has worked for years, but now when the __del__ method is called,
> the common object, which was a set(), has become None.
>
> My assumption is that Module A gets cleaned up before Module B, and when
> Module B tries to access the common set() object it no longer exists.
>
> I have a workaround, so I am just reporting this for the record.
>
> Frank Millman
>
> --
> https://mail.python.org/mailman/listinfo/python-list
>