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
Cochecon dos atributos de instancia:marcaymodelo. - Se crean dos objetos,
coche1ycoche2, cada uno con sus propios valores paramarcaymodelo.
- Define una clase
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
Cochecon un atributo de claseruedasque es compartido por todas las instancias. - Se crean dos objetos,
coche1ycoche2, y ambos tienen acceso al atributo de claseruedas. - El atributo de clase
ruedasse cambia a6, y este cambio se refleja en ambas instancias.
- Define una clase
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.
- Se definen dentro del método
-
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...