Class methods and static methods

Aquí veremos la diferencia entre:

Los métodos regulares toman como primer argumento la instancia, self.

Para crear métodos de clase, a la larga lo que queremos es que el argumento sea la clase.

Para crearlo, hay que usar decoradores (decorators).

Hemos visto una introducción a los decoradores antes: recordar que es como un envoltorio (wrapper) de la función que se pone debajo.

Lo que básicamente hace el decorador es modificar la funcionalidad del método para que reciba como primer argumento la clase, y no la instancia.

Vamos a crear un método de class para la tasa de crecimiento del salario.

Si simplemente ejectutamos lo que teniamos y presentamos las variables de clase y de instancia tenemos:

Es natural que obtengamos una tasa de crecimiento del 10% pues la variable de clase, tasa_incremento_salarial

Pero si queremos cambiar esta cantidad, simplemente deberíamos hacer

El class method afecta a todas las instancias de esa clase.

Hay que tener en cuenta que el class method que hemos implementado hace lo mismo que Empleados.tasa_incremento_salarial = 1.07

Class methods: como constructores alternativos.

Por ejemplo: si los datos, por alguna cuestión, bien en un formato digital complicado y no quiero corregirlos a mano

Si quiero insertar estos nombres en mi clase, debería primero separarlos para que la información tenga el mismo formato que la construcción de la instancia

Ahora podriamos crear un nuevo empleado.

Pero si esto fuera algo común, podriamos crear un nuevo constructor de instancias que lo tenga en cuenta Pero podriamos crear un nuevo constructor

Static methods

Para crear un static methods usamos tambien un decorator

Vamos a crear un static method que me diga si el dia actual es un dia de trabajo o no.

Ejercicio

Cuenta Bancaria

El concepto de cuenta bancaria en un programa es un buen candidato para una clase.

La cuenta tiene algunos datos, normalmente el nombre del titular de la cuenta, el número de cuenta y el saldo actual.

Tres cosas que podemos hacer con una cuenta es retirar dinero, ingresar dinero en la cuenta, e imprimir los datos de la cuenta.

1.- Crear una clase que permita identificar al cliente con su nombre, numero de cuenta y saldo. Además, le permita retirar o dinero.

2.- Una vez creada la clase, al gerente quiere tener un control del numero de cuentas creadas

3.- Ahora al gerente se le ocurre tener informacion sobre fechas: creación, deposito y retiro.

4.- Ahora al genente se le ocurre premiar la fidelización con un tipo de interes fijo para todos los clientes en funcion del saldo medio que han tenido desde el inicio de la cuenta hasta ahora.

Posible solucion

Punto 1

Punto 2

Punto 3

Punto 4