Привет, у меня есть класс со списком в качестве атрибута. Когда я создаю этот класс, я хочу изменить порядок этого списка для этого экземпляра. Например:Python переупорядочивает список атрибутов класса при инициализации
class A(object):
my_list = [1,2,3,4,5]
def __init__(self, first):
self.reorder_list(first)
def reorder_list(self, first):
self.my_list.insert(
0,
self.my_list.pop(
self.my_list.index(first)
)
)
Это необходимо сделать следующее:
a = A(3)
a.my_list
[Out]: 3,1,2,4,5
b = A(4)
b.my_list
[Out]: 4,1,2,3,5
т.д.
Это похоже на работу .... Но не всегда ... Как и в итоге не соответствует. Когда я делаю это так:
def __init__(self, first):
self.my_list = self.reorder_list(first)
def reorder_list(self, first):
my_copy = copy.copy(self.my_list)
... do reordering on my_copy ...
return my_copy
Затем он работает последовательно.
Может кто-нибудь объяснить мне, почему мой первый фрагмент кода - это не способ сделать это, и если мой второй способ сделать это (с копией, а затем с reassinging self.my_list) - правильный способ сделать это?
ваш пример не работоспособной, вы пропустили параметр самодостаточности в reorder_list? – Jul3k
Вы правы, я добавил его. – RvL