Ir al contenido principal

Estructura base de una clase en Python

Recuerdo cuando comencé a programar en Python, en ese tiempo utilizaba Zope, me encantaba programar en DTML, pocas veces en ZPT, y de vez en cuando utilizaba Python mediante el producto (hablando en términos Zopistas), External Methods. Eran tiempos de aprendizaje, recién egresaba de la carrera, tenía trabajo y había mucho que aprender pero ahora aplicado a un entorno real.

Pues bien, programé de varias formas, con más de un método, y recuerdo que en una temporada me negué a la programación orientada a objetos, la causa principal, no entendía, me frustraba y me daba terror, sumándole que sentía que me estancaba en las cosas que tenía que desarrollar (error de principiante).

Ahora, después de varios años, y habiendo experimentado, unos que otros lenguajes de programación, habiendo tenido que mantener, actualizar y evolucionar código, mío y de otros, el contexto me forzó a entender, aprender y utilizar OOP.

Y heme aquí, compartiendo esta entrada:

#$ vi miclasepy.py

#Este es un comentario dentro del archivo.

class MiClasePy():
    """Lo ideal es que siempre pongas una descripción para que los demás programadores puedan saber para qué, y porqué de esta clase."""

    def __init__(self):
        self.instance_var1 = None
        self_instance_var2 = None
        self._INSTANCE_VAR3 = 'http://jonathansalazar.com'


    def.sitio_web(self):
        """Describe qué hace tu función/método. Puede devolver algo con la palabra reservada return o ejecutar un proceso o acción sin tener que emitir un mensaje. En este caso emitimos un mensaje vía return."""

        return f"Este es mi sitio web {self.instance_var3}. Visítame!"


    def modifica_variable(self, valor):
        """Ejecuta una acción en lugar de emitir un mensaje.""""

        self._instance_var2 = f"{valor}"


    def valor_variables(self):
        """Retornamos las variables que inicializaos en el constructor de la clase."""

        return f"instance_var1: {self.instance_var1}, _instance_var2: {self._instance_var2}, _instance_var3: {self._INSTANCE_VAR3}"


Si quisieramos acceder a esta clase desde CLI:

#$ python
py> import miclasepy
py> instance1 = MiClasePy()
py> instance1.sitio_web()
Este es mi sitio web http://jonathansalazar.com. Visítame!

py> instance1.modifica_variable("Mi nuevo valor")
py> instance1.valor_variable()
instance_var1: None, instance_var2: "Mi nuevo valor", instance_var3: 'http://jonathansalazar.com'

Pues aquí lo tienes, es una estructura básica pero es la estructura con la cual puedes comenzar y hacerlo más abstracto.

Saludos,




Comentarios

Entradas populares de este blog

Cómo extraer una columna específica de un archivo CSV

Recientemente me encontré con un pequeño reto, simple pero súper útil cuando no quieres complicarte la vida. Necesitaba de una serie de archivos en formato CSV, separados por comas, extraer únicamente las primeras 3 columnas de 4, ¡sí!, pocas columnas, pero con cientos de filas que no estaba dispuesto a editar a mano, y descubrí el comando cut, lo utilicé de la siguiente manera: [jonas]$ cut -d "," -f1-3 origen.csv > destino.csv Donde -d hace referencia al delimitado en el el archivo, -f1-3 hace referencia a las columnas que vamos a extraer, de la número 1 a la 3, origen.csv hace referencia al archivo de original sobre el cuál vamos a tomar las columnas que necesitamos y finalmente destino.csv que es el archivo destino que almacenará el nuevo resultado, y listo!, podrías complicarte la vida con awk , pero si no eres tan experto, es algo que no vas a utilizar diario y no necesitas invertir tanto tiempo, pues, algo simple como cut te va bien.

Cómo dar acceso a una ip externa a postgresql y concediendo permiso desde iptables

Recientemente tuve la necesidad de aplicar un par de ajustes en nuestro SGDB  (postgresql) en uno de nuestros entornos de desarrollo. Escenario encontrado: No tenía acceso al usuario administrador de PG postgres Contaba con un usuario de sistema ( Linux ) sudoer PG no estaba preparado para permitir conexiones desde fuera El sistema operativo tenia activo iptables y el puerto 5432 no estaba habilitado para escuchar en el exterior en una ip específica. Me tocó leer un poco sobre cómo configurar PostgreSQL para permitir conexiones desde fuera y cómo configurar una regla en iptables que permitiera acceso al proveedor desde el exterior al puerto que necesitaba estuviera escuchando la ip del proveedor. Resumiré en las siguientes líneas las configuraciones más importantes para: Proveer acceso desde PG a un usuario externo. Permitir comunicación entre la ip del usuario externo y nuestro puerto en el servidor donde está nuestro PG . postgresql.conf Primero localiz

I have been playing with pdb for debugging code (introductory level)

Well, this is time to talk about something I have been playing, the pdb standard module python provides. I'll talk in the context of py 3.7+ since there are differences that improve how to work with this. Well, first of all, as you should found in this field and coding experiences and challenges. You have to deal with bugs, unexpected errors, or even worst, unexpected behavior which sometimes is most difficult to trace. Here are some lights on how to use it, this is really useful if your life is coding :). Consider the following commands table. Command Description s Execute the current line and stop at the first possible occasion. n Continue the execution until the next line in the current function is reached or it returns. p Shows the values of variables in context code. ll List the whole source code for the current function or frame l In contrast to ll, this command shows a shorter snippet of code. l. If you pass the param . to this command, it will show you always 11 li