muy basico, algo de herencia

Rafael Villar Burke pachi en mmn-arquitectos.com
Vie Oct 15 19:35:30 CEST 2004


zako wrote:

>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)
>
Si quisieses tener variables estáticas (que comparten todas las 
instancias de una clase) entonces defines esas variables fuera de 
__init__ y no hace falta que hagas referencia a self, puesto que no son 
exclusivas del objeto que tratas en cada momento, sino valores de clase. 
En este caso concreto esto no tendría mucho sentido.

Como ayuda, piensa siempre en self como una referencia al objeto 
concreto, a través de la que accedes a sus datos y métodos. Así,  en la 
definición de los métodos de una clase aparece siempre como argumento 
inicial el self, para poder acceder al objeto del que se ha invocado el 
método.

Pachi




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