В python все это «ссылка». В простой программе, у меня есть класс:Статический список объектов в Python
class Watch(object):
def __init__(self, **kwargs):
self.variables = kwargs
def set_variable(self, k, v):
self.variables[k]=v
def get_variable(self, k):
return self.variables.get(k, None)
def print_info(self):
for k in self.variables:
print k + ": " + str(self.variables[k])
Если я:
list = []
tmp = Watch()
tmp.set_variable('name','frank')
list.append(tmp)
tmp.set_variable('name','doug')
затем
list[0].get_variable('name')
является "Дуг"
Как хранить временные переменные списки или массивы при сохранении массива после добавления?
Редактировать: Похоже на How to clone or copy a list?, хотя мне больше интересно узнать о свойствах хранения объектов в python. Кажется, что объекты рассматриваются как указатели, а не просто передают их содержимое. Может кто-нибудь с этим поговорить? Например, в языке, как C++, я мог бы сказать
list[0]=tmp
, а затем я мог изменить TMP и список [0] останется.
Что вы ожидали? Вы обновили tmp 'name' до' doug', и вот что возвращается – sisanared
try: list.append (copy.copy (tmp)) –
Пожалуйста, не создавайте переменные, которые перезаписывают встроенные объекты ... Это заставляет меня немного умереть внутри – Aaron