вопрос
Допустим, у меня есть функция в Python, которая возвращает dict с некоторыми объектами.
class MyObj:
pass
def my_func():
o = MyObj()
return {'some string' : o, 'additional info': 'some other text'}
В какой-то момент я заметил, что имеет смысл переименовать ключ в 'some string'
как он вводит в заблуждение и плохо описывает то, что на самом деле хранится с этим ключом. Однако, если бы я просто изменил ключ, люди, которые используют этот фрагмент кода, были бы действительно раздражены, потому что я не дал им время через период устаревания, чтобы адаптировать их код.
Текущая попытка
Таким образом, я решил реализовать предупреждение об устаревании с помощью тонкой оболочки вокруг dict:
from warnings import warn
class MyDict(dict):
def __getitem__(self, key):
if key == 'some string':
warn('Please use the new key: 'some object' instead of 'some string'')
return super().__getitem__(key)
Таким образом, я могу создать dict со старым и новым ключом, указывающим на один и тот же объект
class MyObj:
pass
def my_func():
o = MyObj()
return MyDict({'some string' : o, 'some object' : o, 'additional info': 'some other text'})
Вопросы:
- Каковы потенциальные возможности кода может сломаться, если я добавлю это изменение?
- Существует ли более простой (как, например, меньшее количество изменений, использование существующих решений, использование общих шаблонов) способ достижения этого?