Curso de programación en Python usando Linux Quinta parte
En esta serie de post del curso de programación en Python usando Linux decidimos probar con un enfoque diferente. En lugar de empezar conlos conceptos básicos (los ladrillos, por llamarlo de alguna manera) empezamos por el edificio completo para después ocuparnos de sus partes.
En este caso el edificio es el paradigma conocido como Programación Orientada a Objetos. Para terminar con esta parte del curso analizaremos los conceptos claves del paradigma aplicados a la programación en Python. Recuerda que el enlace al post anterior está al final del artículo.
Curso de programación en Python usando Linux
Conceptos clave de la Programación Orientada a Objetos aplicados a Python
Clase
Es la plantilla con la cuál se construyen los objetos. Se ocupa de definir cómo será un objeto y lo que puede hacer. Es algo así como una receta de cocina. Se define con el comando :
class Nombre_de_la_clase
Atributos
Son las características que describen a un objeto. Actúan como variables pertenecientes exclusivamente a la clase.
Constructor
Es un método especial que se ejecuta en forma automática al crear un objeto, Se encarga de inicializar los atributos del mismo.
Métodos
Son funciones definidas dentro de una clase que determinan el comportamiento del objeto.
Herencia
Es la capacidad de una clase de tomar las características y comportamientos de otras que ya existen añadiendo y modificando lo que ya existen. La clase de la que se toman las características se llama clase padre y la que lo recibe, con una falta de originalidad enorme, clase hija.
Polimorfismo
Hablando de falta de originalidad, esta característica significa que clases diferentes pueden tener métodos con el mismo nombre pero con comportamientos diferentes
Manejando archivos en Python
En los ejemplos que proporcionamos anteriormente, la información se incluía dentro del código. Se trata de un método poco práctico ya que hay que modificarlo cada vez que haya que agregar o borrar una información. Por suerte, hay otras formas de hacerlo como la lectura de los datos dese un archivo.
Creamos un archivo de texto simple con el título sistema.txt y el contenido
Ubuntu
26.04
Debian
Ahora veamos el programa.
class Sistemas:
Definimos una clase con el nombre SIstemas como habíamos hecho antes.
def __init__(self, nombre, version, derivada):
Iniciamos el constructor automático que se ocupa de asignar los parámetros.
self.nombre = nombre
self.version = version
self.derivada = derivada
Con estas líneas se guardan los atributos recibidos como valores dle objeto.
def mostrar_info(self):
Define la forma cómo se mostrara la información de los atributos.
print(f"Nombre: {self.nombre}")
print(f"Versión: {self.version}")
print(f"Derivada: {self.derivada}")
Instrucciones para imprimir en pantalla los atributos del objeto. Las llaves insertan el valor de las variables dentro del texto.
with open("sistema.txt", "r") as archivo:
Este comando abre el archivo en modo de lectura y lo cierra una vez que se termina el bloque
lineas = archivo.readlines()
Lee todas las líneas de un archivo y las guarda en una lista. Hablaremos de las lsitas en archivos posteriores.
nombre = lineas[0].strip()
version = lineas[1].strip()
derivada = lineas[2].strip()
Accede a cada línea por su posición y elimina saltos de línea y espacios con el comando strip.
sistema = Sistemas(nombre, version, derivada)
Crea una instancia del objeto de la clase Sistemas con los parámetros que leyó del archivo.
sistema.mostrar_info()
Llama al método encargado de imprimir en pantalla
La función open()
La función open() viene predefinida dentro de Python y requiere los siguientes parámetros:
File
Es obligatorio y le indica al programa donde buscar el archivo. Si está dentro de la misma carpeta del programa solo se indica el nombre del archivo y la extensión. SI no es necesario también indicar la ruta de donde está almacenada.
open("archivo.txt") Cuando el archivo está en la carpeta actual.
open("carpeta/archivo.txt") Cuando el archivo está dentro de otra carpeta.
open("/home/usuario/archivo.txt") Se indica la carpeta dentro de la carpeta personal de un usuario específico.
open(3); Se indica un archivo por el identificador que le asigna el sistema operativo.
Mode
Es un parámetro opcional que indica la forma con la que se trabaja con el archivo.
-
- r: Modo de solo lectura. Da error si el archivo no fue creado previamente.
<li>w: Escribe el archivo y lo crea si no está. Borra el contenido existente.
- a: Crea el archivo si no existe. SI hay contenido escribe al final de este.
- x: Crea el archivo. Da error si no existe.
- r+: Lee y escribe el archivo, da error si no se creo previamente.
- w+: Lee y escribe el archivo. Borra el contenido existente.
- a+: Lee y escribe al final del contenido.
- t: Es la opción por defecto, trabaja con cadenas de texto.
- b: Trabaja con bytes. Es ideal para el trabajo con imágenes o pdf.
buffering
Es el control de la memoria temporal antes de escribir un archivo. No es necesario especificarlo, pero en algunos casos puede se rútil.
- 0: Sin buffer, se escribe directo a disco. Ideal para trabajar con el modo b.
- 1; Es el modo por defecto. Almacena el dato cargado hasta encontrar un salto de línea y entonces lo escribe en la variable. Se usa solo en el modo de texto.
- =: Despues del igual se establece un valor en bytes para indicar el tamaño que debe tener el buffer.
- -1: El sistema operativo determina el tamaño del buffer.
Algunos ejemplos
open("archivo.txt", buffering=0) No crea el buffer ya que estamos trabajando con el modo binario.
open("archivo.txt", buffering=1) El buffer trabaja con saltos de línea
open("archivo.txt", buffering=4096) Establece un buffer de 4096 bytes
open("archivo.txt", buffering=-1) Utiliza el buffer por defecto del sistema operativo.
encoding
Establece la codificación de caracteres del proyecto. Si no se especifica se utiliza la del sistema.
errors
Otro parámetro opcional. Define que hacer cuando se encuentran errores de codificación.
- Strict: Indica un error cuando lo encuentra.
- Ignore: Omite los caracteres que no puede decodificar.
- Replace: Sustituye los caracteres no identificados por signos de pregunta.
- backslashreplace: Sustituye los caracteres que ignora por la secuencia \xNN
Newline
Otro parámetro opcional pero que puede resultar útil cuando se trabaja con archivos generados por diferentes sistemas operativos. Un salto de línea es un carácter invisible que le indica al sistmea operativo que terminó una línea y comienza la siguiente.
Continuaremos desarrollando este tema y explicando nuevas instrucciones en el próximo artículo.

