Nociones avanzadas del lenguaje Python
Introducción
Este capítulo se dedica a las nociones un poco más avanzadas en lenguaje Python, nociones que nos serán útiles en el aprendizaje de Pygame, ya sea directa o indirectamente. En particular, este es el caso de la programación orientada a objetos, cuyas primeras nociones (noción de clase y noción de instancia) es esencial dominar.
El capítulo también estará dedicado a otras nociones avanzadas, aunque menos esenciales para evolucionar en el mundo de Pygame.
Programación orientada a objetos
1. Introducción
De nuevo, aquí la idea es no detallar los conceptos paso a paso, sino más bien dar las claves que permitan proyectarse lo más rápido posible sobre el desarrollo de Pygame. Después de recordar los conceptos principales de la POO (programación orientada a objetos), será necesario revisar varios ejemplos relacionados con clases, instancias e incluso un concepto como la herencia.
Pasaremos lo antes posible a descubrir la POO en Python siguiendo este "camino":
-
Las clases, y por lo tanto las instancias (que se relacionan con el concepto de encapsulación).
-
Esto nos permitirá abordar el concepto de atributos, propiedades y métodos de clases.
-
Finalmente, diremos unas palabras sobre la herencia y posteriormente sobre el polimorfismo. De hecho, abordaremos la cuestión de la sobrecarga de métodos.
2. Clases en Python
La clase se puede ver como el modelo, el molde de objetos que podemos utilizar durante la creación como prefiramos. Por lo tanto, podemos imaginar tener una clase Pais que, por ejemplo, tendrá una propiedad nombre y otra capital.
Por lo tanto, a partir de esta clase (de este modelo) podemos instanciar países, por ejemplo con el nombre "España" cuya propiedad capital sea Madrid. También declinamos un conjunto de metadatos que definen una noción dada (aquí, un país).
Intentemos codificar esto en Python:
class Pais:
nombre = "País por definir"
capital = "Valor desconocido"
Por ahora, no tenemos mucho: solo una plantilla que aún no hemos intentado usar, es decir, aún no hemos intentado crear objetos tangibles a partir de esta clase.
Cree un objeto de la siguiente manera. El siguiente objeto pais1 es una instancia de la clase Pais.
pais1 = Pais()
Vemos que, para cada una de las dos propiedades, la instancia tiene los valores predeterminados indicados en la clase.
print(pais1.nombre)
print(pais1.capital)
De hecho, se obtiene lo siguiente como resultado en nuestro terminal:
> País por definir
> Valor desconocido
Ahora, podemos tratar de añadir un poco más de complejidad a nuestra clase para que sea una herramienta útil, es decir, una entidad que puede contener información sobre...
El entorno virtual
1. Contexto
Cuando programe en Python, rápidamente tendrá una multitud de módulos instalados en su máquina. E incluso para un módulo determinado, rápidamente tendrá varias versiones del mismo módulo instaladas en su máquina. Este puede ser el caso del módulo Pygame que, tras unos meses de práctica, tendrá en varias versiones.
En lenguaje Python existe un dispositivo bastante relacionado con la forma de programar: es el entorno virtual. Este último permite instalar los módulos necesarios en sus versiones correctas, estrictamente en relación con un proyecto determinado. Esto facilita el trabajo, aporta seguridad y claridad a los proyectos o a la ejecución de los proyectos de terceros que utiliza.
2. Pequeño ejemplo teórico
Hay varios sistemas de entorno virtual en Python. Sin embargo, aquí solo mencionaremos un tipo, que es el que se utiliza habitualmente: se trata de virtualenv.
Por supuesto, debe comenzar instalando el módulo para esto.
pip install virtualenv
Para un proyecto determinado, a un proyecto que se diseña en Pygame por ejemplo, le puede asociar rápidamente un entorno virtual de manera implícita. Por lo tanto, se trata de crearlo y luego activarlo. En el siguiente ejemplo, el entorno virtual se denomina "venv".
virtualenv venv
source venv/bin/activate
A partir de esta activación...
La PEP8
1. Contexto
PEP (en inglés Python Enhancement Proposal) es un conjunto de documentos sobre los que se ponen de acuerdo las personas involucradas en la evolución del lenguaje Python.
Cada PEP explora una funcionalidad, un aspecto del lenguaje Python y da soporte a una decisión técnica colectiva, que puede tener que ver con el lenguaje en sí (con la sintaxis principalmente) o con aspectos relacionados con el lenguaje.
Puede encontrar al primera PEP, PEP0, fechado en el año 2000, en la dirección: https://peps.python.org/
Aquí hablaremos principalmente sobre la PEP8, que data del año 2001, y se modificó de manera regular hasta 2013. El recurso relacionado con esta PEP se encuentra en la dirección: https://peps.python.org/pep-0008/
2. El espíritu de la PEP8
Como habrá visto, esta propuesta de PEP titulada Style Guide for Python Code, se centra principalmente en la forma del código en sí y no tanto (de hecho, nada) en aspectos de programación de software.
El objetivo es que un desarrollador de Python que esté consultando código Python compatible con la PEP8 sea más eficiente, porque la forma del código es algo a lo que está acostumbrado.
Este aspecto no estuvo presente en la primera edición de este trabajo. Por lo tanto, el código que se propone a partir de ahora será lo más respetuoso posible con la PEP8...