/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Examples/test-suite/python/python_weakref_runme.py
40 строк
1 KB
Julien Schueller
Python: Drop sys.version_info<3 examples code
07 июл 2026, 01:50
07 июл 2026, 01:50
cb6e7c5
Код
Авторство
О чём код?
import weakref import python_weakref def check(message, lhs, rhs): if lhs != rhs: raise RuntimeError(message, lhs, rhs) callbacks = [] def callback(ref): callbacks.append(ref) ts = python_weakref.TestStruct() # plain weak reference ts_ref = weakref.ref(ts) check("deref'd weakref is not object", ts_ref() is ts, True) check("wrong number of weak references", weakref.getweakrefcount(ts), 1) ts_ref().x = 123 # delete the weakref del ts_ref check("wrong number of weak references", weakref.getweakrefcount(ts), 0) # create it again ts_ref = weakref.ref(ts) check("wrong number of weak references", weakref.getweakrefcount(ts), 1) # weak reference proxy with callback ts_ref_cb = weakref.proxy(ts, callback) check("wrong number of weak references", weakref.getweakrefcount(ts), 2) # weakref proxy fails "is" but passes "==" check("deref'd weakref != object", ts_ref_cb, ts) check("weakref proxy not usable", ts_ref_cb.x, 123) # delete object check("callback was called", callbacks, []) del ts check("callback wasn't called", callbacks, [ts_ref_cb]) check("deref'd weakref is not None", ts_ref() is None, True)