Я читал эту запись и сейчас пытаюсь создать класс для изменения словаря и сохранить измененный словарь в новой переменной, без какого-либо влияния на исходный словарь.Вот код:
dict_1 = {'a':[0,1,2]}
print('dict_1 before updating is :', dict_1)
#################################################
class dict_working:
def __init__(self, my_dict):
self.my_dict = (my_dict)
def update_dict(self):
for i in range(len(self.my_dict['a'])) :
self.my_dict['a'][i] = self.my_dict['a'][i]+10
return self.my_dict
#################################################
obj = dict_working(dict_1)
b_dict = obj.update_dict()
print('dict_1 after updating is :', dict_1)
print('A new object after updating is:', b_dict)
Но когда я пробую код, он также изменяет переменную dict_1
:
dict_1 before updating is : {'a': [0, 1, 2]}
dict_1 after updating is : {'a': [10, 11, 12]}
A new object after updating is: {'a': [10, 11, 12]}
Поэтому я попытался deepcopy
словарь вкласс и результаты были такими, как я хотел:
import copy
dict_1 = {'a':[0,1,2]}
print('dict_1 before updating is :', dict_1)
#################################################
class dict_working:
def __init__(self, my_dict):
self.my_dict = copy.deepcopy(my_dict)
def update_dict(self):
for i in range(len(self.my_dict['a'])) :
self.my_dict['a'][i] = self.my_dict['a'][i]+10
return self.my_dict
obj = dict_working(dict_1)
b_dict = obj.update_dict()
#################################################
print('After adding deepcopy method:')
print('dict_1 after updating is :', dict_1)
print('A new object after updating is:', b_dict)
Результаты:
dict_1 before updating is : {'a': [0, 1, 2]}
After adding deepcopy method:
dict_1 after updating is : {'a': [0, 1, 2]}
A new object after updating is: {'a': [10, 11, 12]}
Мой вопрос: используют ли эксперты Python тот же самый метод deepcopy
в этих ситуациях илиесть другие способы?