Cómo crear módulos y clases con Python

Hari Santanam
Ciencia y Datos
Published in
7 min readNov 27, 2018
Cubitos

En lenguajes orientados a objetos, como Python, las clases son una forma para crear sus propios objetos. Los objetos son una encapsulación de variables y funciones en una sola entidad. Los objetos obtienen sus variables y funciones de las clases.

Tal vez estás pensando, ¿de qué estás hablando? Por favor repite lo que acabas de decir?!

Aquí hay algunos ejemplos que te ayudan a entender, sigue leyendo. También hay un shell de código interactivo, simplemente presione el botón “Ejecutar” en la parte superior de la ventana específica.

La forma más sencilla de describir las clases y cómo usarlas es esta:

Imagina que tienes grandes poderes. Se crea una especie (“clase”).

Luego se crean atributos para esa especie (“propiedades”): altura, peso, miembros, color, poderes, etc.

Luego crearé una instancia de esa especie: Fido el perro, Drogon de Juego de Tronos, y así sucesivamente. Entonces trabajas con estas instancias:

  • En un juego, por ejemplo, participarían en acción, interactuarían, usando sus atributos.
  • En una aplicación bancaria.
  • En una aplicación de compra / venta / comercio / arrendamiento de vehículos, la clase de vehículo podría generar subclases como los automóviles. Cada uno tiene las características como el kilometraje, las opciones, las características, el color y el recorte.

Ya puedes ver por qué esto es útil. Está creando, reutilizando, adaptando y mejorando elementos de una manera muy eficiente, lógica y útil.

A estas alturas, probablemente hayas dado que esta es una forma de clasificación y agrupación, que es similar a cómo aprenden los humanos:

  • Los animales son seres vivos que no son humanos o árboles, en un sentido básico.
  • Luego, a los diferentes tipos de animales: los perros y los gatos son, probablemente, los primeros animales que la mayoría de nosotros aprendimos.
  • A continuación, pasa a los diferentes atributos de los animales: formas, tamaños, sonidos, apéndices, etc.

Por ejemplo, cuando eras un niño, tu primera comprensión de un perro fue probablemente algo con cuatro patas que ladraban. Luego aprendiste a distinguir que algunos eran perros reales, otros eran juguetes. Que este concepto de “perro” contenía muchos tipos.

Crear y usar clases es importante:

  • construyendo una plantilla para poner “cosas” en — una clasificación
  • que luego puede ser operado. Por ejemplo, arrastre a todas las personas con perros a los que podría vincularse a un blog sobre mascotas, oa todos los clientes del banco que puedan ser buenas perspectivas para una nueva tarjeta de crédito.

El punto principal aquí es que las clases son objetos que pueden producir instancias de esas plantillas, en que se pueden aplicar operaciones y métodos. Es una excelente manera de conceptualizar, organizar y construir una jerarquía para cualquier organización o proceso.

Una medida en nuestro mundo se vuelve más complejo, esta es una manera de imitar esa complejidad desde una perspectiva jerárquica. También construimos una comprensión más profunda de los procesos e interacciones para entornos empresariales, técnicos y sociales desde el punto de vista de la tecnología virtual.

Un ejemplo podría ser un videojuego que crees. Cada personaje podría ser una “clase”, con sus propios atributos, que interactúa con instancias de otras clases. El rey Jorge de la clase “Rey” podría interactuar con Court Jester Funnyman de la clase “Payaso”, y así sucesivamente. Un rey podría tener una clase real de “sirvientes”, y una clase de “sirvientes” siempre tener una clase de “rey”, por ejemplo.

Esto es lo que haremos:

  • crear una clase y usarla
  • Crear un módulo y mover la creación de clase y la iniciación al módulo
  • Llama al módulo en un nuevo programa para usar la clase.

El código está disponible en GitHub aquí .

#TSB - Crear clase en Python - posiciones de cohete (x, y) y gráfico# algunos elementos y comentarios en negrita 
import matplotlib.pyplot as plt
class Rocket():
def __init__(self, x=0, y=0):
#each rocket tiene la posición (x, y); el usuario o la función de llamada tiene la opción
#de pasar los valores de x,y, o por defecto están configurados en 0

self.x = x
self.y = y

def move_up(self):
self.y += 1

def move_down(self):
self.y -= 1

def move_right(self):
self.x += 1

def move_left(self):
self.x -= 1
#Hacer una serie de cohetes - posiciones x, y, ('rockets')
rockets=[]
rockets.append(Rocket())
rockets.append(Rocket(0,2))
rockets.append(Rocket(1,4))
rockets.append(Rocket(2,6))
rockets.append(Rocket(3,7))
rockets.append(Rocket(5,9))
rockets.append(Rocket(8, 15))

#grafica con cohetes
for index, rocket in enumerate(rockets):
#original position of rockets
print("Rocket %d is at (%d, %d)." % (index, rocket.x, rocket.y))
plt.plot(rocket.x, rocket.y, 'ro', linewidth=2, linestyle='dashed', markersize=12)
#mueve'rocket' arriba
rocket.move_up()
print("New Rocket position %d is at (%d, %d)." % (index, rocket.x, rocket.y))
#plot la nueva posición
plt.plot(rocket.x, rocket.y, 'bo', linewidth=2, linestyle='dashed', markersize=12)
#mover el cohete a la izquierda, luego traza la nueva posición
rocket.move_left()
plt.plot(rocket.x, rocket.y, 'yo', linewidth=2, linestyle='dashed', markersize=12)
#representa la leyenda del gráfico para hacer coincidir los colores con la posición
plt.gca().legend(('original position','^ - Moved up', '< - Moved left'))
plt.show()
#plt.legend(loc='upper left')

Ahora creamos un módulo y movamos parte del código anterior al módulo. Siempre que tengamos que crear este conjunto simple de coordenadas x, y en cualquier programa, podemos usar el módulo para hacerlo.

¿Qué es un módulo y por qué lo necesitamos?

Un módulo es un archivo que contiene definiciones y declaraciones de Python. El módulo es un código Python que se puede llamar desde otros programas para tareas de uso común, sin tener que escribirlos en todos y cada uno de los programas que los usan.

Por ejemplo, cuando llama a “matplotlib.plot”, está llamando a un módulo de paquete. Si no tuviera este módulo, tendría que definir la funcionalidad de trazado en cada programa que usara un gráfico de trazado.

De la documentación de Python:

Si sale del intérprete de Python y lo ingresa nuevamente, las definiciones que ha creado (funciones y variables) se pierden. Por lo tanto, si desea escribir un programa algo más largo, es mejor usar un editor de texto para preparar la entrada para el intérprete y ejecutarla con ese archivo como entrada. Esto se conoce como la creación de un script. A medida que su programa se alarga, es posible que desee dividirlo en varios archivos para facilitar el mantenimiento. También puede usar una función útil que haya escrito en varios programas sin copiar su definición en cada programa.

Para admitir esto, Python tiene una forma de poner definiciones en un archivo y usarlas en un script o en una instancia interactiva del intérprete. Tal archivo se llama módulo; Las definiciones de un módulo se pueden importar a otros módulos o al módulo principal (la colección de variables a las que tiene acceso en un script ejecutado en el nivel superior y en el modo de calculadora).

Aquí está nuestro módulo simple. Se necesita la creación de la clase y las funciones para mover una instancia de esa clase desde el programa anterior y hacia su propia clase. Luego usaremos esto en un nuevo programa simplemente llamando y haciendo referencia a este módulo:

Note lo que hicimos arriba:

  • creado e inicializado la clase
  • creó una función para mover una instancia de la clase en las cuatro direcciones principales (arriba, abajo, derecha, izquierda) y los incrementos, como parámetros o argumentos de la función
  • creó otra función para calcular la distancia entre dos instancias de la clase, usando la fórmula de distancia de gráfico

Así es como usaremos el nuevo módulo para volver a escribir el mismo programa desde la primera parte. Note en la sección de importación al principio, ahora importamos el simple_module1módulo que acabamos de crear:

Así es como usar el nuevo módulo para volver a escribir el mismo programa desde la primera parte. Nota en la sección de importación al principio, ahora importamos el simple_module1módulo que acabamos de crear:

Salida desde el código de crear y llamar a nuestro propio módulo!
Comparación del archivo original a la izquierda (crear clase, usarlo) y la misma funcionalidad usando un módulo, a la derecha
Comparación de la salida. En el lado derecho, cambio la forma del marcador por distinción, pero las posiciones no han cambiado.

Eso es genial, puedes decir, ¿cuáles son otros usos para esto? Un ejemplo clásico es una cuenta bancaria. Una clase de cliente podría contener el nombre y los detalles de contacto y, lo que es más importante, la clase de cuenta tendría elementos de depósito y retiro.

Esto está excesivamente simplificado pero, para fines ilustrativos, es útil. Eso es todo: cree una plantilla, luego defina instancias de esa plantilla con detalles (propiedades) y agregue valor agregando, restando, modificando, moviendo y usando estas instancias para los objetivos de su programa.

¿Todavía te preguntas sobre clases? Ok, pongámonos “con clase” — aquí hay otra ilustración simple. Llamaremos a esta clase “Persona”. Sólo tiene dos propiedades: nombre y edad. Luego agregaremos una instancia de esto con el nombre y la edad de una persona, y lo imprimiremos. Dependiendo de cuál sea su objetivo, puede imaginar todos los otros detalles que podría agregar, por ejemplo, estado civil y preferencias de ubicación para una aplicación de red social, experiencia laboral en años y especialización en la industria para una aplicación relacionada con la carrera. Presiona el pequeño triángulo de abajo para verlo funcionar.

Una estructura de clase simple en Python: puede tardar un minuto en inicializarse completamente después de presionar Ejecutar en la parte superior de la ventana para ver los resultados

Así que ahí lo tienen. Puede crear muchas clases diferentes, con clases primarias, subclases, etc. Gracias por leer — aplauda si le gustó. Aquí hay algunas otras referencias si desea obtener más información:

Publicado originalmente en FreeCodeCamp aquí.

Aquí hay algunos otros artículos que te pueden interesar:

--

--

Hari Santanam
Ciencia y Datos

I am interested in AI, Machine Learning and its value to business and to people. I occasionally write about life in general as well.