Definir un objeto simple

PythonPythonBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo definir una clase simple de Python para representar información de acciones (stocks). Las clases son un concepto clave en la programación orientada a objetos, lo que te permite modelar entidades del mundo real y estructurar tu código de manera más eficiente.

Los objetivos de este laboratorio incluyen aprender a definir una clase simple de Python, entender los atributos y métodos de clase, crear e interactuar con instancias de clase y aplicar formato para mostrar información de objetos. El archivo stock.py se creará durante este laboratorio.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/ObjectOrientedProgrammingGroup -.-> python/classes_objects("Classes and Objects") python/ObjectOrientedProgrammingGroup -.-> python/constructor("Constructor") python/ObjectOrientedProgrammingGroup -.-> python/encapsulation("Encapsulation") subgraph Lab Skills python/strings -.-> lab-132394{{"Definir un objeto simple"}} python/function_definition -.-> lab-132394{{"Definir un objeto simple"}} python/classes_objects -.-> lab-132394{{"Definir un objeto simple"}} python/constructor -.-> lab-132394{{"Definir un objeto simple"}} python/encapsulation -.-> lab-132394{{"Definir un objeto simple"}} end

Comprendiendo las clases de Python

En Python, una clase actúa como un modelo (blueprint) para crear objetos. La programación orientada a objetos es un enfoque poderoso que nos permite organizar nuestro código de manera efectiva. Lo hace agrupando datos y funciones relacionados. De esta manera, podemos manejar programas complejos con mayor facilidad y hacer que nuestro código sea más modular y mantenible.

Una clase de Python se compone de dos componentes principales:

  • Atributos: Son variables que almacenan datos dentro de una clase. Puedes pensar en los atributos como las características o propiedades de un objeto. Por ejemplo, si estamos creando una clase para representar a una persona, los atributos podrían ser el nombre, la edad y la altura de la persona.
  • Métodos: Son funciones que pertenecen a una clase y pueden acceder o modificar sus atributos. Los métodos definen las acciones que un objeto puede realizar. Usando el ejemplo de la clase persona, un método podría ser una función que calcula la edad de la persona en meses.

Las clases son extremadamente útiles ya que proporcionan una forma de crear código reutilizable y modelar conceptos del mundo real. En este laboratorio, crearemos una clase Stock. Esta clase se utilizará para representar información de acciones (stocks), como el nombre de la acción, el número de acciones y el precio por acción.

A continuación, se muestra la estructura básica de una clase de Python:

class ClassName:
    def __init__(self, parameter1, parameter2):
        self.attribute1 = parameter1
        self.attribute2 = parameter2

    def method_name(self):
        ## Code that uses the attributes
        return result

El método __init__ es un método especial en las clases de Python. Se llama automáticamente cuando creamos un nuevo objeto a partir de la clase. Este método se utiliza para inicializar los atributos del objeto. El parámetro self es una referencia a la instancia de la clase. Se utiliza para acceder a los atributos y métodos desde dentro de la clase. Cuando llamamos a un método en un objeto, Python pasa automáticamente el propio objeto como el primer argumento, por lo que usamos self en las definiciones de los métodos. Esto nos permite trabajar con los atributos de la instancia específica y realizar operaciones en ellos.

✨ Revisar Solución y Practicar

Creando la clase Stock

En Python, una clase es un modelo (blueprint) para crear objetos. Te permite agrupar datos y funcionalidades juntos. Ahora, creemos nuestra clase Stock para representar información de acciones (stocks). Una acción tiene ciertas características, como su nombre, el número de acciones y el precio por acción. Definiremos atributos para estos aspectos dentro de nuestra clase.

  1. Primero, debes estar en el directorio correcto en el WebIDE. Si no estás ya en el directorio /home/labex/project, navega hasta él. Aquí es donde trabajaremos en el código de nuestra clase Stock.

  2. Una vez que estés en el directorio correcto, crea un nuevo archivo en el editor. Llama a este archivo stock.py. Este archivo contendrá el código de nuestra clase Stock.

  3. Ahora, agreguemos el código para definir la clase Stock. Copia y pega el siguiente código en el archivo stock.py:

class Stock:
    def __init__(self, name, shares, price):
        self.name = name
        self.shares = shares
        self.price = price

    def cost(self):
        return self.shares * self.price

En este código:

  • La declaración class Stock: crea una nueva clase llamada Stock. Esto es como una plantilla para crear objetos de acciones.
  • El método __init__ es un método especial en las clases de Python. Se llama constructor. Cuando creas un nuevo objeto de la clase Stock, el método __init__ se ejecutará automáticamente. Toma tres parámetros: name, shares y price. Estos parámetros representan la información sobre la acción.
  • Dentro del método __init__, usamos self para referirnos a la instancia de la clase. Almacenamos los valores de los parámetros como atributos de instancia. Por ejemplo, self.name = name almacena el parámetro name como un atributo del objeto.
  • El método cost() es un método personalizado que definimos. Calcula el costo total de la acción multiplicando el número de acciones (self.shares) por el precio por acción (self.price).
  1. Después de agregar el código, guarda el archivo. Puedes hacerlo presionando Ctrl+S o haciendo clic en el icono de Guardar. Guardar el archivo asegura que tus cambios se conserven.

Examinemos el código nuevamente para asegurarnos de entenderlo:

  • Definimos una clase llamada Stock. Esta clase se utilizará para crear objetos de acciones.
  • El método __init__ toma tres parámetros: name, shares y price. Inicializa los atributos del objeto con estos valores.
  • Dentro de __init__, almacenamos estos parámetros como atributos de instancia usando self. Esto permite que cada objeto tenga su propio conjunto de valores para estos atributos.
  • Agregamos un método cost() que calcula el costo total multiplicando el número de acciones por el precio. Esta es una funcionalidad útil para nuestros objetos de acciones.

Cuando creamos un objeto Stock, el método __init__ se ejecutará automáticamente, configurando el estado inicial de nuestro objeto con los valores que proporcionamos. De esta manera, podemos crear fácilmente múltiples objetos de acciones con diferentes nombres, números de acciones y precios.

✨ Revisar Solución y Practicar

Creando objetos Stock

Ahora que hemos definido nuestra clase Stock, es hora de ponerla en acción. Crear instancias de una clase es como hacer ejemplos específicos basados en un modelo general. En este caso, la clase Stock es nuestro modelo, y crearemos algunos objetos de acciones. Después de crear estos objetos, aprenderemos cómo acceder a sus atributos (características) y métodos (acciones que pueden realizar).

  1. Primero, necesitamos abrir una terminal en el WebIDE. La terminal es como un centro de comandos donde podemos dar instrucciones a nuestra computadora. Para abrirla, haz clic en "Terminal" en el menú.

  2. Una vez que la terminal esté abierta, debemos asegurarnos de estar en el directorio correcto del proyecto. El directorio del proyecto es donde se almacenan todos los archivos relevantes para nuestro proyecto. Si no estás ya en el directorio del proyecto, utiliza el siguiente comando para navegar hasta allí:

cd /home/labex/project
  1. Ahora, queremos iniciar Python en modo interactivo con nuestro archivo stock.py. El modo interactivo nos permite probar nuestro código paso a paso y ver los resultados inmediatamente. El archivo stock.py contiene la definición de nuestra clase Stock. Utiliza el siguiente comando:
python3 -i stock.py

La bandera -i es importante aquí. Le dice a Python que ejecute primero el script stock.py. Después de ejecutar el script, inicia una sesión interactiva. En esta sesión, podemos acceder a cualquier clase y variable que se hayan definido en el script stock.py.

  1. Creemos un nuevo objeto Stock para las acciones de Google. Crear un objeto es como hacer una instancia específica de la clase Stock con valores particulares. Utiliza el siguiente código:
s = Stock('GOOG', 100, 490.10)

Esta línea de código crea una nueva instancia de la clase Stock. Aquí está lo que significa cada valor:

  • Nombre: 'GOOG' - Este es el símbolo de las acciones de Google.
  • Acciones: 100 - Representa el número de acciones de Google que tenemos.
  • Precio: 490.10 - Este es el precio por acción de las acciones de Google.
  1. Ahora que tenemos nuestro objeto Stock, podemos acceder a sus atributos. Los atributos son como las propiedades de un objeto. Para acceder a un atributo, usamos el nombre del objeto seguido de un punto y el nombre del atributo.
s.name

Cuando ejecutes este código, mostrará el nombre de la acción:

'GOOG'

Accedamos al número de acciones:

s.shares

La salida será el número de acciones que definimos:

100

Finalmente, accedamos al precio por acción:

s.price

La salida será el precio por acción:

490.1
  1. Nuestra clase Stock tiene un método llamado cost(). Un método es como una acción que un objeto puede realizar. En este caso, el método cost() calcula el costo total de nuestras acciones. Para llamar a este método, utiliza el siguiente código:
s.cost()

La salida será el costo total:

49010.0

El método cost() funciona multiplicando el número de acciones (100) por el precio por acción (490.10), lo que nos da 49010.0.

✨ Revisar Solución y Practicar

Trabajando con múltiples objetos Stock

En la programación orientada a objetos, una clase es como un modelo (blueprint), y las instancias de esa clase son los objetos reales creados a partir de ese modelo. Nuestra clase Stock es un modelo para representar acciones (stocks). Podemos crear múltiples instancias de esta clase Stock para representar diferentes acciones. Cada instancia tendrá su propio conjunto de atributos, como el nombre de la acción, el número de acciones y el precio por acción.

  1. Con la sesión interactiva de Python todavía en ejecución, vamos a crear otro objeto Stock. Esta vez, representará a IBM. Para crear una instancia de la clase Stock, llamamos al nombre de la clase como si fuera una función y pasamos los argumentos necesarios. Los argumentos aquí son el nombre de la acción, el número de acciones y el precio por acción.
t = Stock('IBM', 50, 91.5)

En esta línea de código, estamos creando un nuevo objeto Stock llamado t que representa a IBM. Tiene 50 acciones, y cada acción cuesta $91.5.

  1. Ahora, queremos calcular el costo de esta nueva acción. La clase Stock tiene un método llamado cost() que calcula el costo total de la acción multiplicando el número de acciones por el precio por acción.
t.cost()

Cuando ejecutes este código, Python llamará al método cost() en el objeto t y devolverá el costo total.

Salida:

4575.0
  1. Podemos formatear y mostrar la información de nuestras acciones de una manera agradable y organizada utilizando el formato de cadenas (string formatting) de Python. El formato de cadenas nos permite especificar cómo se deben presentar diferentes tipos de datos en una cadena.
print('%10s %10d %10.2f' % (s.name, s.shares, s.price))

En este código, estamos utilizando el formato de cadenas de estilo antiguo en Python. El operador % se utiliza para sustituir valores en una plantilla de cadena. La plantilla de cadena '%10s %10d %10.2f' define cómo se deben formatear el nombre de la acción, el número de acciones y el precio.

Salida:

      GOOG        100     490.10

Esta cadena formateada funciona de la siguiente manera:

  • %10s formatea una cadena en un campo de 10 caracteres de ancho (alineado a la derecha). Esto significa que el nombre de la acción se colocará en un espacio de 10 caracteres de ancho y estará alineado a la derecha dentro de ese espacio.
  • %10d formatea un entero en un campo de 10 caracteres de ancho. Entonces, el número de acciones se colocará en un espacio de 10 caracteres de ancho.
  • %10.2f formatea un número de punto flotante con 2 decimales en un campo de 10 caracteres de ancho. El precio se mostrará con dos decimales y se colocará en un espacio de 10 caracteres de ancho.
  1. Ahora, formateemos la información de las acciones de IBM de la misma manera. Solo necesitamos reemplazar el nombre del objeto de s a t en el código de formato de cadenas.
print('%10s %10d %10.2f' % (t.name, t.shares, t.price))

Salida:

       IBM         50      91.50
  1. En Python moderno, también podemos usar f - cadenas (f - strings) para el formato. Las f - cadenas son más legibles y fáciles de usar. Comparemos los costos de ambas acciones utilizando f - cadenas.
print(f"Google stock costs ${s.cost()}, IBM stock costs ${t.cost()}")

En esta f - cadena, estamos incrustando directamente expresiones dentro de llaves {}. Python evaluará estas expresiones e insertará los resultados en la cadena.

Salida:

Google stock costs $49010.0, IBM stock costs $4575.0
  1. Cuando hayas terminado de experimentar, es hora de salir del modo interactivo de Python. Puedes hacer esto utilizando la función exit().
exit()

Cada objeto Stock mantiene su propio conjunto de atributos, lo que demuestra cómo funcionan las instancias de clase en la programación orientada a objetos. Esto nos permite crear múltiples objetos de acciones, cada uno con valores diferentes, mientras comparten los mismos métodos.

✨ Revisar Solución y Practicar

Mejorando la clase Stock

En Python, las clases son una forma poderosa de organizar datos y comportamiento. Nos permiten agrupar datos y funciones relacionados. En esta sección, mejoraremos nuestra clase Stock agregando un método que muestre la información de las acciones formateada. Este es un gran ejemplo de cómo podemos encapsular tanto datos como comportamiento en nuestras clases. La encapsulación significa agrupar datos con los métodos que operan sobre esos datos, lo que ayuda a mantener nuestro código organizado y más fácil de gestionar.

  1. Primero, necesitas abrir el archivo stock.py en el editor del WebIDE. El archivo stock.py es donde hemos estado trabajando en nuestra clase Stock. Abrirlo en el editor nos permite hacer cambios en la definición de la clase.

  2. Ahora, modificaremos la clase Stock para agregar un nuevo método display(). Este método se encargará de imprimir la información de las acciones de manera bien formateada. Así es como puedes hacerlo:

class Stock:
    def __init__(self, name, shares, price):
        self.name = name
        self.shares = shares
        self.price = price

    def cost(self):
        return self.shares * self.price

    def display(self):
        print(f"Stock: {self.name}, Shares: {self.shares}, Price: ${self.price:.2f}, Total Cost: ${self.cost():.2f}")

En el método __init__, inicializamos el nombre de la acción, el número de acciones y el precio. El método cost calcula el costo total de la acción multiplicando el número de acciones por el precio. El nuevo método display utiliza una f - cadena para formatear e imprimir la información de la acción, incluyendo el nombre, el número de acciones, el precio y el costo total.

  1. Después de hacer estos cambios, necesitas guardar el archivo. Puedes hacerlo presionando Ctrl+S en tu teclado o haciendo clic en el icono de Guardar en el editor. Guardar el archivo asegura que tus cambios se conserven y se puedan utilizar más tarde.

  2. A continuación, iniciaremos una nueva sesión interactiva de Python. Una sesión interactiva nos permite probar nuestro código inmediatamente. Para iniciar la sesión, ejecuta el siguiente comando en la terminal:

python3 -i stock.py

La opción -i le dice a Python que inicie una sesión interactiva después de ejecutar el archivo stock.py. De esta manera, podemos usar la clase Stock y sus métodos de inmediato.

  1. Ahora, creemos un objeto de acción y usemos el nuevo método display(). Crearemos un objeto que represente las acciones de Apple y luego llamaremos al método display para ver la información formateada. Aquí está el código:
apple = Stock('AAPL', 200, 154.50)
apple.display()

Cuando ejecutes este código en la sesión interactiva, verás la siguiente salida:

Stock: AAPL, Shares: 200, Price: $154.50, Total Cost: $30900.00

Esta salida muestra que el método display está funcionando correctamente y está formateando la información de la acción como se esperaba.

  1. Finalmente, creemos una lista de acciones y mostrémoslas todas. Esto mostrará cómo podemos usar el método display con múltiples objetos de acciones. Aquí está el código:
stocks = [
    Stock('GOOG', 100, 490.10),
    Stock('IBM', 50, 91.50),
    Stock('AAPL', 200, 154.50)
]

for stock in stocks:
    stock.display()

Cuando ejecutes este código, obtendrás la siguiente salida:

Stock: GOOG, Shares: 100, Price: $490.10, Total Cost: $49010.00
Stock: IBM, Shares: 50, Price: $91.50, Total Cost: $4575.00
Stock: AAPL, Shares: 200, Price: $154.50, Total Cost: $30900.00

Al agregar el método display() a nuestra clase, hemos encapsulado la lógica de formato dentro de la clase misma. Esto hace que nuestro código sea más organizado y más fácil de mantener. Si necesitamos cambiar la forma en que se muestra la información de las acciones, solo necesitamos modificar el método display en un solo lugar, en lugar de hacer cambios en todo nuestro código.

✨ Revisar Solución y Practicar

Resumen

En este laboratorio, has aprendido cómo definir una clase de Python con atributos y métodos, crear instancias de clase con valores de atributos específicos, acceder a los atributos de los objetos y llamar a los métodos de los objetos. También has aprendido a formatear y mostrar la información de los objetos de varias maneras, trabajar con múltiples objetos de la misma clase y mejorar una clase agregando nuevos métodos.

Estos conceptos de programación orientada a objetos son fundamentales en Python y sirven como base para organizar el código en aplicaciones más grandes. Las clases ayudan a agrupar datos y funcionalidades relacionados, lo que hace que tu código sea más modular y más fácil de mantener. Para mejorar aún más tus habilidades, considera agregar características a la clase Stock, como validación de datos, métodos para actualizar las acciones o el precio y un método para calcular la ganancia o pérdida.