Я работаю над каким-то проектом, и у нас много такого кода, как этот;
# filtering fields are different from each other, please ignore the similarity below
def function1(self, param):
list_x = Model1.objects.filter(foo=bar, bla=bla).values_list('field', flat=True)
list_y = Model2.objects.filter(foo=bar, bla=bla).values_list('field', flat=True)
lists_to_delete = set(list_x) - set(list_y)
# here is the code line with set() that needed to be method
self._delete(lists_to_delete)
def function2(self, param):
list_z = Model3.objects.filter(foo=bar, bla=bla).values_list('field', flat=True)
list_q = Model4.objects.filter(foo=bar, bla=bla).values_list('field', flat=True).distinct()
list_w = Model5.objects.filter(foo=bar, bla=bla).values_list('field', flat=True)
lists_to_delete = set(list_x) - set(list_y) - set(list_w)
# here is the code line with set() that needed to be method
self._delete(lists_to_delete)
... # other functions continues like above
...
...
Итак, как вы можете видеть, у нас такое же использование с функцией set()
.И мне нужно изменить это использование с пользовательским методом.Я пытался написать метод, подобный этому;
def _get_deleted_lists(self, *args):
value = set()
for arg in args:
value |= set(arg)
return value
, и использование будет меняться как;
lists_to_delete = self._get_deleted_lists(list_x, list_y, ...)
вместо этого;
lists_to_delete = set(list_x) - set(list_y)
Но мой заказметод не возвращает то же значение, что и раньше.Как мне этого добиться?