muy basico, algo de herencia

zako ezako en yahoo.es
Vie Oct 15 19:21:57 CEST 2004


On Fri, Oct 15, 2004 at 12:00:14PM -0500, jtempo wrote:
> si tengo un clase
> 
> class Persona(object):
>   def __init__ (self, nombre, apellido):
>     self.Nombre= Nombre
>     self.Apellido=Apellido
> 
>   def NombreCompleto(self):
>     return "%s, %s" % (self.Apellido, self.Nombre)
> 
> si hago
> var= Persona('Juan','Perez')
> var.NombreCompleto() # me devuelve 'Perez, Juan'
> 
> Ahora deseo hacer una clase 'hija' de esta y agregarle un par de 
> propiedades HorasTrabajadas y PrecioPorHora
> 
> class Empleado(Persona)...
>  def Sueldo
>     sueldo=HorasTrabajadas*PrecioPorHora
>     return sueldo
> 
> Cómo sigue, no consigo hacerlo funcionar, quiero agregar esos atributos 
> (HorasTrabajadas y PrecioPorHora), perdonen que sea muy basico, per o 
> estoy muy atascado con esto y no consigo resolverlo gracias de Antemano.

Si Sueldo es un metodo de la clase Empleado deberia ser:
    def Sueldo(self):
        ....

Si las propiedades que quieres agregar a Empleado son datos miembros deberías
modificar el constructor de la clase Empleados a:
    def __init__(self, nombre,apellido, HorasTrabajadas, PrecioPorHora):
        self.HorasTrabajadas = HorasTrabajadas
        self.PrecioPorHora = PrecioPorHora
        Persona.__init__(self, nombre, apellido)

Los datos miembro tambien los puedes generar en cualquier funcion no son
necesidad exclusiva del constructor. Sin añadir un nuevo constructor a
Empleado podrias modificar Sueldo asi:
    def Sueldo(self, HorasTrabajadas, PrecioPorHora):
        self.HorasTrabajadas = HorasTrabajadas
        self.PrecioPorHora = PrecioPorHora
        sueldo=self.HorasTrabajadas*self.PrecioPorHora
        return sueldo

Bueno espero q te sirva (y no haya metido la pata xD). Saludos,

zako




Más información sobre la lista de distribución Python-es