我曾假设在 Python 中如果我做一些
class A:
print("hi")
如果我用一些明确删除 A,这个“hi”只会被打印不止一次del A
在我稍大的项目中,我有以下代码(名称已更改):
class A(ISomething):
print(threading.current_thread())
try:
A.MY_DICT # yeah, this should never ever result in anything but an error but neither should this code be run twice
print(A.MY_DICT)
except NameError:
print("A.MY_DICT unknown")
MY_DICT = {}
它产生这个输出:
$ python main.py
<_MainThread(MainThread, started 140438561298240)>
A.MY_DICT unknown
<_MainThread(MainThread, started 140438561298240)>
A.MY_DICT unknown
所以在同一个线程上,相同的类级代码被执行两次。当我从来没有的时候,这怎么可能del A
?该代码以前有效,但我没有承诺缩小破坏它的更改范围。
使用 MY_DICT 而不是 A.MY_DICT 的相同代码同样失败,并且 PyDev 在撰写本文时已经告诉我这不起作用,我非常有信心发生了一些可疑的事情。