Ошибка инициализации объекта Python. Или я неправильно понимаю, как работают объекты?

  1 import sys
  2 
  3 class dummy(object):
  4     def __init__(self, val):
  5         self.val = val
  6 
  7 class myobj(object):
  8     def __init__(self, resources):
  9         self._resources = resources
 10 
 11 class ext(myobj):
 12     def __init__(self, resources=[]):
 13         #myobj.__init__(self, resources)
 14         self._resources = resources
 15 
 16 one = ext()
 17 one._resources.append(1)
 18 two = ext()
 19 
 20 print one._resources
 21 print two._resources
 22 
 23 sys.exit(0)

Это напечатает ссылку на объект, назначенныйone._resources для обоихone а такжеtwo объекты. Я думаю, чтоtwo будет пустой массив, так как он явно устанавливает его как таковой, если он не определен при создании объекта. раскомментировавmyobj.__init__(self, resources) делает то же самое. С помощьюsuper(ext, self).__init__(resources) также делает то же самое.

Единственный способ заставить его работать, если я использую следующее:

two = ext(dummy(2))

Мне не нужно было вручную устанавливать значение по умолчанию при создании объекта, чтобы сделать эту работу. Или, может быть, я делаю. есть идеи?

Я попробовал это, используя Python 2.5 и 2.6.

Ответы на вопрос(5)

Ваш ответ на вопрос