Open
Description
Bug report
Bug description:
This should always print True, that is an attribute accessed from a class should match the value that's in the type's mappingproxy:
class X:
def __del__(inner_self):
v = C.a
print(v == C.__dict__['a'])
class C:
a = X()
# prime the cache
C.a
C.a
# destructor shouldn't be able to see inconsisent state
C.a = X()
C.a = X()
But this prints False because the destructor can be run when the assignment into the type dict occurs, but before the type version is invalidated.
CPython versions tested on:
3.8, CPython main branch
Operating systems tested on:
Linux