Cuando un proyecto comienza a crecer nos vemos obligados a dejar el modo de programación scripting mode para pasar a programación mas seria, me refiero a organizar el código mediante funciones con las cuales podremos reutilizar funciones, comenzar a utilizar estructuras complejas las cuales mediante la programación orientada a objectos nos resultará mas cómodo operar con ellas, en este artículo voy a explicar de forma muy breve como funcionan las clases en python y su herencia.
En este ejemplo tan básico podemos ver como una clase SysAdmin hereda de Employee de este modo no tendremos que volver a escribir el código de Employee, el objeto employee2 tendrá los métodos de Employee al haber heredado de esta clase, en rojo dejo remarcada la parte mas interesante del código.
#!/usr/bin/env python
class Employee(object):
def __init__(self, name, dni):
self.name = name
self.dni = dni
def getName(self):
return self.name
def getDni(self):
return self.dni
class SysAdmin(Employee):
def __init__(self, name, dni, can_see_matrix):
Employee.__init__(self, name, dni )
self.can_see_matrix = can_see_matrix
if __name__ == "__main__":
employee = Employee('employee00', '123456')
print "Employee created with following data:"
print "-- Name: " + str(employee.getName())
print "-- Dni: " + str(employee.getDni())
employee2 = SysAdmin('employee01', '54321', 'Sure')
print "Employee created with following data:"
print "-- Name: " + str(employee2.getName())
print "-- Dni: " + str(employee2.getDni())
print "-- Can See Matrix: " + str(employee2.can_see_matrix)
La clase SysAdmin tiene los métodos de Employee gracias a la instrucción:
Employee.__init__(self, name, dni )
Y el parámetro extra can_see_matrix gracias a:
self.can_see_matrix = can_see_matrix