Error de inicialización del objeto Python. ¿O estoy malentendido cómo funcionan los objetos?
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)
Esto imprimirá la referencia al objeto asignado aone._resources
para ambosone
ytwo
objetos. Pensaría quetwo
sería una matriz vacía, ya que se establece claramente como tal si no se define al crear el objeto. Sin comentariosmyobj.__init__(self, resources)
hace lo mismo Utilizandosuper(ext, self).__init__(resources)
También hace lo mismo.
La única forma en que puedo hacerlo funcionar es si uso lo siguiente:
two = ext(dummy(2))
No debería tener que establecer manualmente el valor predeterminado al crear el objeto para que esto funcione. O tal vez lo hago. ¿Alguna idea?
Intenté esto usando Python 2.5 y 2.6.