Inicializador de clase de Python | audacia
Es común que los principiantes de Python aprendan a escribir una línea de código a la vez. Por ejemplo, puede escribir la siguiente línea de código Python para imprimir «Hello World» en su pantalla:
También puede definir una variable con una línea corta de código Python:
Después de progresar más allá del nivel de principiante, es importante aprender cómo Python puede agrupar líneas de código individuales de manera útil. En Python, es posible escribir funciones y clases: ambos son bloques de código de varias líneas que realizan propósitos útiles.
En esta publicación, hablaremos sobre qué son las funciones y las clases. Nuestro enfoque principal será el inicializador de clase, un bloque especial de código que le permite configurar clases.
Funciones de Python.
Suponga que está escribiendo código Python para una aplicación. Desea que su aplicación salude a los usuarios por su nombre. Puede escribir una función de Python simple que logre esto de la siguiente manera:
def greet(username):
print("Hello " + username)
Puede ver que comenzamos con la palabra clave «def». Esto significa que estamos definiendo algo; en particular, estamos definiendo una función llamada «saludar()». Dentro de los paréntesis de nuestra función saludar(), puede ver que hay una variable llamada «nombre de usuario». A eso lo llamamos el “argumento” de la función. La función puede hacer lo que quiera con ese argumento. En este caso, la función incluye ese argumento en una instrucción print(), diciendo hola. Puede ver lo que hace esta función ejecutando el siguiente código:
Verá el siguiente resultado:
La función tomó el argumento que le pasamos («Robinson Crusoe») y lo usó para imprimir un saludo simple. Esta función es simple, pero es posible hacer funciones mucho más complejas. Agreguemos solo un poco a esta función:
def greet(username,number_of_visits):
print("Hello " + username)
print("You have used this app " + str(number_of_visits) + " times.")
Ahora, tenemos dos argumentos en lugar de uno y dos declaraciones de impresión en lugar de una. Nuestra función saludar() ahora saludará a los usuarios y también les dirá cuántas veces han usado la aplicación.
Crear una clase con un inicializador.
Saludar a los usuarios es útil, pero si está creando una aplicación, deberá hacer más con los usuarios que simplemente saludarlos. Será útil si puede crear un objeto en Python que almacene todo lo que sabe sobre sus usuarios de una manera que sea fácil de configurar, de fácil acceso y fácil de trabajar. En Python, puede lograrlo creando una «clase», un tipo especial de objeto que facilita muchas tareas avanzadas de Python.
Veamos un ejemplo simple de una clase:
class User:
def __init__(self, username):
self.name = username
Aquí, creamos una clase llamada Usuario. Puede ver que dentro de esta clase, usamos la palabra clave «def» para definir algo que parece una función. El bloque de código que parece una función se llama __init__() y tiene dos argumentos.
Este objeto __init__() es similar a una función. Acepta argumentos («self» y «username») como lo haría una función, y contiene código como debería hacerlo una función. Pero dado que __init()__ es parte de una clase, lo llamamos «método» en lugar de función.
Se supone que cada clase tiene un método __init__(). Es comúnmente llamado el constructor de la clase. También se le llama el inicializador de la clase o el inicializador de la clase. Puede considerarlo como el bloque de código que ayuda a configurar cada instancia de una clase.
Veamos un ejemplo para dejar clara la idea de un inicializador de clases.
Ejemplo: creación y saludo de usuarios.
Hasta ahora, hemos repasado el siguiente código para una función saludar() y una clase llamada Usuario:
def greet(username,number_of_visits):
print("Hello " + username)
print("You have used this app " + str(number_of_visits) + " times.")
class User:
def __init__(self, username):
self.name = username
Ahora que hemos definido una clase y una función, hagamos lo que se llama «crear una instancia» de nuestra clase de usuario:
Esta línea de código creó una nueva instancia de la clase Usuario que definimos. También podríamos decir que “instancia” nuestra clase Usuario. O, más simplemente, podríamos decir que creamos un nuevo usuario. Para crear este nuevo usuario, Python ejecutó el código en nuestro método __init()__, que es el inicializador de la clase Usuario. Nuestro inicializador de clase es bastante simple: todo lo que hace es tomar un argumento (el nombre de usuario) y asignarlo a algo llamado self.name.
El objeto self.name es algo llamado atributo, es decir, una pieza de información relacionada con nuestra clase. Cada usuario debe tener un nombre de usuario, por lo que al crear un nuevo usuario, nuestra clase requiere un argumento que especifique el nombre de usuario de ese usuario. Nuestro inicializador, el método __init()__, es lo que asegura que el nombre de usuario esté asociado con el usuario correcto.
Después de crear un usuario, puede acceder a cualquier atributo que haya definido para ese usuario. Por ejemplo:
Esto imprimirá el nombre de usuario del usuario llamado JH (en este caso, es «Jim Hawkins»). Podemos acceder a este atributo porque nuestro inicializador lo definió cuando se creó el usuario JH. ¡Nuestro inicializador está haciendo su trabajo!
Podemos crear tantos usuarios como queramos y hacer lo que queramos con ellos. Por ejemplo, creemos otro nuevo usuario y llamemos a nuestra función greeting() para saludarlos:
JS = User("John Silver")
greet(JS.name,12)
Debería ver el siguiente resultado:
Hello John Silver
You have used this app 12 times.
Aprende y practica más Python.
A medida que continúe progresando en su educación sobre Python, aprenderá a usar las clases para realizar tareas avanzadas y complejas. Pero no importa cuán sofisticada sea su clase, siempre debe tener un inicializador de clase para establecer valores de atributos importantes y crear nuevas instancias de su clase.
Si está interesado en obtener más información sobre temas de Python, como los inicializadores de clase, consulte el Nanogrado intermedio de Python de Udacity.
COMIENZA A APRENDER