Предположим, есть 2 модуля Python - библиотека и приложение.
Код библиотеки:
class lib():
def __init__(self,arg):
smallArg = arg['key1']['key2']
smallArg['key3'] = 2
Код приложения:
class app():
def __init__(self):
self.arg = {'key1' : {'key2' : {'key3' : 1}}}
self.libObj = lib(self.arg)
def getArg(self):
print(self.arg)
appObj = app()
app.getArg()
, так как словари являются изменяемыми, печатается словарь {'key1': {'key2': {'key3': 2}}}, который был изменен кодом библиотеки. Это означает, что библиотека может даже добавить больше ключей или удалить их, и приложение также получит этот мутированный словарь.
Есть ли способ / практика, чтобы действительно гарантировать, что другие модули не нарушают структуру передаваемого словаря ??
---> использование copy.deepcopy () или json.loads (json.dumps ()) не кажется правильным. Должен быть лучший способ!
Это лишь небольшой пример, когда 2 модуля взаимодействуют друг с другом. Подумайте еще о нескольких модулях, которые передают друг другу вложенные словари, вычисляют их и возвращают. Любой модуль может изменить структуру вложенного словаря. Существует большая вероятность пропустить эту деталь и может нарушить код.
Есть ли лучший способ? Должно быть.