Python - Ayuda con código sobre herencia

   
Vista:

Ayuda con código sobre herencia

Publicado por Angel (19 intervenciones) el 26/04/2015 19:19:03
Hola a todos:

Ruego ayuda con el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class servivo(object):
    def __init__(self, size):
        self.size=size
        print "el ser vivo a nacido con un tamano de " + str(size)
    def comer(self, comida):
        print "el animal esta comiendo", comida
    def __del__(self):
               print "el animal ha muerto"
 
class pez(servivo):
    def __init__(self, size, speed):
        servivo.__init__(self, size)
        self.speed=speed
	def nadar(self):
		print "el pez esta nadando a una velocidad de ",  self.speed
 
pez1=pez(58, 10)
pez1.comer("algas")
pez1.nadar()
del(pez1)

Y me da el siguiente resultado por la terminal:

el ser vivo a nacido con un tamano de 58
el animal esta comiendo algas
el animal ha muerto
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pruebas.py", line 22, in <module>
pez1.nadar()
AttributeError: 'pez' object has no attribute 'nadar'

Yo pensaba que la función nadar era un método y no un atributo, como me da la respuesta.
Debo de tener algún error, pero no se cual es. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Ayuda con código sobre herencia

Publicado por xve (1235 intervenciones) el 26/04/2015 21:44:16
Hola Angel, creo que el problema esta en que esta mal indentado tu código...

Fíjate que la linea def nadar() esta dentro de la función "__init__" Si la sacas fuera te funcionara correctamente...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con código sobre herencia

Publicado por Angel (19 intervenciones) el 26/04/2015 23:44:03
Hola xve:

Primero que nada darte las gracias por la respuesta.

Ha debido de haber un error de transmisión, pues yo no tengo def nadar() dentro de la función "__init__", sino que la tengo fuera. De todas formas he probado indentarlo de varias maneras y me sigue saliendo el mismo error. Por favor, ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Ayuda con código sobre herencia

Publicado por xve (1235 intervenciones) el 27/04/2015 15:04:54
Hola Angel, yo lo he copiado correctamente y me funciona a la perfección...

Este es el código que utilizo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class servivo(object):
    def __init__(self, size):
        self.size=size
        print "el ser vivo a nacido con un tamano de " + str(size)
    def comer(self, comida):
        print "el animal esta comiendo", comida
    def __del__(self):
               print "el animal ha muerto"
 
class pez(servivo):
    def __init__(self, size, speed):
        servivo.__init__(self, size)
        self.speed=speed
    def nadar(self):
        print "el pez esta nadando a una velocidad de ",  self.speed
 
pez1=pez(58, 10)
pez1.comer("algas")
pez1.nadar()
del(pez1)

y me devuelve al ejecutarlo:
el ser vivo a nacido con un tamano de 58
el animal esta comiendo algas
el pez esta nadando a una velocidad de 10
el animal ha muerto


Utilizo python 2.7
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con código sobre herencia

Publicado por Angel (19 intervenciones) el 27/04/2015 18:08:47
Hola xve:

Tengo el código exactamente igual y me saca lo siguiente:

angel@angel-sobremesa:~$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pruebas import *
el ser vivo a nacido con un tamano de 58
el animal esta comiendo algas
el animal ha muerto
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pruebas.py", line 19, in <module>
pez1.nadar()
AttributeError: 'pez' object has no attribute 'nadar'

¿ Crees que puede ser por la versión de Python, o porque es linux2?. Gracias por anticipado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con código sobre herencia

Publicado por Alejandro (5 intervenciones) el 27/04/2015 19:40:54
Creo que el problema es que lo estas probando en phython 3.4.3 por eso te muestra el error. si usas phython 2.7.9 te va a funcionar o actualiza tu código a la nueva versión de phython 3.0

No olvides que en la versión 3.0 tienes que usar print("xxxx") es vez de print"xxx" y otras cosas que cambian en esa versión
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con código sobre herencia

Publicado por Angel (19 intervenciones) el 27/04/2015 20:12:00
Hola Alejandro:

Gracias por tu ayuda.

Estoy utilizando Python 2.7.6 en linux2. Si puedes observar el print no me lo hace como la versión 3.0, sino como la versión 2.7 . No sé donde puede estar el fallo...Ruego ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con código sobre herencia

Publicado por 12-trunks-12 (37 intervenciones) el 27/04/2015 20:40:15
Puedes mandar una captura para ver como tienes todo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con código sobre herencia

Publicado por Angel (19 intervenciones) el 27/04/2015 21:23:04
Hola 12-trunks-12:

El código es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class servivo(object):
    def __init__(self, size):
        self.size=size
        print "el ser vivo a nacido con un tamano de " + str(size)
    def comer(self, comida):
        print "el animal esta comiendo", comida
    def __del__(self):
        print "el animal ha muerto"
 
class pez(servivo):
    def __init__(self, size, speed):
        servivo.__init__(self, size)
        self.speed=speed
    def nadar(self):
	print "el pez esta nadando a una velocidad de ",  self.speed
 
pez1=pez(58, 10)
pez1.comer("algas")
pez1.nadar()
del(pez1)
----------------------------------------------------------------------
Y la terminal me da el siguiente resultado:

angel@angel-sobremesa:~$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pruebas import *
el ser vivo a nacido con un tamano de 58
el animal esta comiendo algas
el animal ha muerto
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pruebas.py", line 19, in <module>
pez1.nadar()
AttributeError: 'pez' object has no attribute 'nadar'
>>>

Ruego ayuda, pues a xve le funciona bien con el mismo código que yo, y a mi no.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Ayuda con código sobre herencia

Publicado por xve (1235 intervenciones) el 27/04/2015 22:23:52
Hola Angel, yo lo ejecuto directamente desde la terminal de Linux Debian...

$ python archivo.py
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con código sobre herencia

Publicado por Angel (19 intervenciones) el 27/04/2015 22:58:08
Hola xve:

Mira lo que me hace, ejecutándolo como tu:

angel@angel-sobremesa:~$ python pruebas.py
el ser vivo a nacido con un tamano de 58
el animal esta comiendo algas
Traceback (most recent call last):
File "pruebas.py", line 19, in <module>
pez1.nadar()
AttributeError: 'pez' object has no attribute 'nadar'
el animal ha muerto
angel@angel-sobremesa:~$

Le doy mil vueltas, y no sé como solucionarlo. Pero si a ti te funciona creo que pasaré de tema y pensaré que o bien se trata de un problema de versiones o de SO(el mio Ubuntu 14.04).

Gracias por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar