Я видел декораторы , которые позволяют помечать функцию как устаревшую, чтобы при каждом использовании этой функции выдавалось предупреждение. Я хотел бы сделать то же самое, но для глобальной переменной, но я не могу придумать способ обнаружения доступа к глобальной переменной. Я знаю о функции globals () и могу проверить ее содержимое, но это просто скажет мне, определен ли глобал (каким он будет, если функция устарела, а не все ли удалены), а не использовался ли он на самом деле , Лучшая альтернатива, которую я могу придумать, это что-то вроде этого:
# myglobal = 3
myglobal = DEPRECATED(3)
Но кроме проблемы того, как заставить DEPRECATED действовать точно так же, как '3', я не уверен, что может сделать DEPRECATED, что позволит вам обнаружить каждый раз, когда к нему обращаются. Я думаю, что лучшее, что он мог бы сделать, - это перебирать все методы глобала (поскольку все в Python является объектом, поэтому даже у «3» есть методы для преобразования в строку и т. П.) И «декорировать» их, чтобы все устарели. Но это не идеально.
Есть идеи? Кто-нибудь еще занимался этой проблемой?