Ошибка инициализации объекта 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.