Curso de python nivel medio

¿Qué son los atributos en Python?

En Python, los atributos son variables que pertenecen a una clase o a sus instancias. Los atributos pueden ser:

  • Atributos de instancia: Son únicos para cada objeto creado a partir de una clase.
  • Atributos de clase: Son compartidos por todas las instancias de una clase.

1. Atributos de instancia

Los atributos de instancia son variables que se definen dentro del método __init__ de una clase. Cada objeto (instancia) creado a partir de la clase tendrá su propia copia de estos atributos, lo que significa que los valores pueden ser diferentes para cada instancia.

Ejemplo de atributos de instancia

1class Coche:
2    def __init__(self, marca, modelo):
3        self.marca = marca  # Atributo de instancia
4        self.modelo = modelo  # Atributo de instancia
5
6# Crear dos instancias de la clase Coche
7coche1 = Coche("Toyota", "Corolla")
8coche2 = Coche("Honda", "Civic")
9
10# Mostrar los atributos de cada instancia
11print(f"Coche 1: {coche1.marca} {coche1.modelo}")
12print(f"Coche 2: {coche2.marca} {coche2.modelo}")
Salida de Consola!:
Coche 1: Toyota Corolla
Coche 2: Honda Civic
  • ¿Qué hace este código?:
    • Define una clase Coche con dos atributos de instancia: marca y modelo.
    • Se crean dos objetos, coche1 y coche2, cada uno con sus propios valores para marca y modelo.

2. Atributos de clase

Los atributos de clase son variables que se definen directamente en la clase, fuera de cualquier método. Estos atributos son compartidos por todas las instancias de la clase. Si cambias el valor de un atributo de clase, el cambio afectará a todas las instancias que compartan ese atributo.

Ejemplo de atributos de clase

1class Coche:
2    ruedas = 4  # Atributo de clase
3
4    def __init__(self, marca, modelo):
5        self.marca = marca  # Atributo de instancia
6        self.modelo = modelo  # Atributo de instancia
7
8# Crear dos instancias de la clase Coche
9coche1 = Coche("Toyota", "Corolla")
10coche2 = Coche("Honda", "Civic")
11
12# Mostrar el atributo de clase para cada instancia
13print(f"Coche 1: {coche1.marca} {coche1.modelo}, Ruedas: {coche1.ruedas}")
14print(f"Coche 2: {coche2.marca} {coche2.modelo}, Ruedas: {coche2.ruedas}")
15
16# Cambiar el atributo de clase
17Coche.ruedas = 6
18
19# Mostrar el atributo de clase actualizado para cada instancia
20print(f"Después de cambiar el atributo de clase:")
21print(f"Coche 1: {coche1.marca} {coche1.modelo}, Ruedas: {coche1.ruedas}")
22print(f"Coche 2: {coche2.marca} {coche2.modelo}, Ruedas: {coche2.ruedas}")
Salida de Consola!:
Coche 1: Toyota Corolla, Ruedas: 4
Coche 2: Honda Civic, Ruedas: 4
Después de cambiar el atributo de clase:
Coche 1: Toyota Corolla, Ruedas: 6
Coche 2: Honda Civic, Ruedas: 6
  • ¿Qué hace este código?:
    • Define una clase Coche con un atributo de clase ruedas que es compartido por todas las instancias.
    • Se crean dos objetos, coche1 y coche2, y ambos tienen acceso al atributo de clase ruedas.
    • El atributo de clase ruedas se cambia a 6, y este cambio se refleja en ambas instancias.

Resumen de diferencias

  • Atributos de instancia:

    • Se definen dentro del método __init__.
    • Cada instancia tiene su propia copia de estos atributos.
    • Cambiar un atributo de instancia en un objeto no afecta a otros objetos.
  • Atributos de clase:

    • Se definen directamente en la clase, fuera de los métodos.
    • Son compartidos por todas las instancias de la clase.
    • Cambiar un atributo de clase afecta a todas las instancias.

Conclusión

Los atributos de instancia y de clase te permiten manejar datos de manera flexible dentro de tus clases en Python. Los atributos de instancia son específicos para cada objeto, mientras que los atributos de clase son compartidos por todas las instancias de la clase. ¡Practica creando tus propias clases con ambos tipos de atributos para ver cómo puedes organizar y manejar datos de manera efectiva en tus programas!

  • Loading...