Class Inheritance: heredar de otras clases ya creadas

Esto permite heredar attributos o funciones ya creadas por un clase "padre/madre", i.e., a parent class.

Esto permite escribir subclasses que permitan recoger toda la funcionalidad de la parent class y además, añadir nuevas funcionalidades que no afecten a la parent class

Vamos a suponer que ahora queremos crear dos tipos de empleados: los que trabajan en planta y los que trabajan en la oficina.

Todos tienen un elemento comun definido por su nombre, apellido, salario e email, que ya lo define la clase Empleados

Por tanto, podemos, en las subclasses de trabajdores en planta u oficina podemos heredar estos atributos de la parent class.

Veamos que, solamente poner esto, genera atributos

Python utiliza el Scope para buscar la informacion: primero va al local, y no encuentra; luego va al enclosing , y encuentra la información.

Aquí, a esto se le llama: Method resolution order. Para verlo, utilizamos help()

Vamos a individualizar las tasas de incremento salarial.

Pero antes, veamos como podemos afectarlas directamente en los atributos

Peor esto podriamos hacerlo dentro de la subclass.

Lo más usual es usar las subclases para añadir elementos diferenciadores.

Por ejemplo, si queremos pasar la tarea que realiza en planta, esto es algo específico de los trabajadores de planta.

Entonces, vamos a tener que añadir un __init__() method

Vamos a crear una clase para las jefas de planta donde nos interesara saber cuandos empleados tienen a su cargo

Importante: nunca hay que pasar objetos mutables as default arguments (lo vimos o lo veremos.)

Ahora crearemos altas y bajas de empleados en esta sublace

isinstance: object is an instance of a class issubclass: object is an instance of a subclass