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