Introducción
En este laboratorio, explorarás clases e instancias en Python y aprenderás cómo verificar si un objeto es una instancia de una clase. Comenzarás creando una clase Dog con atributos de clase e instancia, luego crearás instancias de la clase Dog y accederás a sus atributos.
Luego aprenderás a usar isinstance() para la comprobación de tipos y la compararás con type() para coincidencias exactas. Esto te permitirá determinar si un objeto pertenece a una clase específica o a una subclase de esa clase, brindándote una comprensión más profunda de la programación orientada a objetos en Python.
Explorar clases e instancias
En este paso, aprenderás sobre clases e instancias en Python. Las clases son como planos para crear objetos, y las instancias son los objetos reales creados a partir de esos planos. Comprender las clases y las instancias es fundamental para la programación orientada a objetos en Python.
Primero, creemos una clase simple llamada Dog.
Abre el editor de VS Code en el entorno de LabEx.
Crea un nuevo archivo llamado
dog.pyen el directorio~/project.~/project/dog.pyAgrega el siguiente código a
dog.py:## Define a class called Dog class Dog: ## Class attribute species = "Canis familiaris" ## Instance attribute def __init__(self, name, age): self.name = name self.age = ageAquí, definimos una clase llamada
Dog. El atributospecieses un atributo de clase, lo que significa que es compartido por todas las instancias de la claseDog. El método__init__es un método especial llamado constructor. Se utiliza para inicializar los atributos de instancianameyagecuando se crea un nuevo objetoDog.Ahora, creemos instancias de la clase
Dog. Agrega el siguiente código al final dedog.py:## Create instances of the Dog class buddy = Dog("Buddy", 9) miles = Dog("Miles", 4) ## Access instance attributes print(f"{buddy.name} is {buddy.age} years old.") print(f"{miles.name} is {miles.age} years old.") ## Access class attribute print(f"{buddy.name} is a {buddy.species}.") print(f"{miles.name} is a {miles.species}.")En esta parte, creamos dos instancias de la clase
Dog:buddyymiles. Luego accedemos a sus atributos de instancia (nameyage) y al atributo de clase (species) utilizando la notación de punto (.).Para ejecutar el script
dog.py, abre una terminal en VS Code y ejecuta el siguiente comando:python dog.pyDeberías ver la siguiente salida:
Buddy is 9 years old. Miles is 4 years old. Buddy is a Canis familiaris. Miles is a Canis familiaris.Esta salida confirma que has creado exitosamente instancias de la clase
Dogy has accedido a sus atributos.
Utilizar isinstance() para la comprobación de tipos
En este paso, aprenderás cómo usar la función isinstance() en Python para verificar si un objeto es una instancia de una clase en particular. Esta es una herramienta útil para garantizar que tu código maneje correctamente diferentes tipos de objetos.
A partir de la clase Dog del paso anterior, creemos un nuevo archivo de Python para explorar isinstance().
Abre el editor de VS Code en el entorno de LabEx.
Crea un nuevo archivo llamado
type_check.pyen el directorio~/project.~/project/type_check.pyCopia la definición de la clase
Dogdedog.pyatype_check.py. Tu archivotype_check.pyahora debería verse así:class Dog: species = "Canis familiaris" def __init__(self, name, age): self.name = name self.age = ageAhora, agreguemos algo de código para usar la función
isinstance(). Agrega el siguiente código al final detype_check.py:## Create instances of the Dog class buddy = Dog("Buddy", 9) miles = Dog("Miles", 4) ## Check if buddy is an instance of the Dog class print(isinstance(buddy, Dog)) ## Check if miles is an instance of the Dog class print(isinstance(miles, Dog)) ## Check if a string is an instance of the Dog class print(isinstance("Hello", Dog))Aquí, creamos dos instancias de la clase
Dog,buddyymiles. Luego usamos la funciónisinstance()para verificar si estas instancias son de tipoDog. También verificamos si una cadena "Hello" es una instancia de la claseDog.Para ejecutar el script
type_check.py, abre una terminal en VS Code y ejecuta el siguiente comando:python type_check.pyDeberías ver la siguiente salida:
True True FalseLa salida muestra que
buddyymilesson efectivamente instancias de la claseDog, mientras que la cadena "Hello" no lo es.
Comparar con type() para coincidencias exactas
En este paso, aprenderás cómo usar la función type() en Python y compararla con isinstance() para la comprobación de tipos. Mientras que isinstance() verifica si un objeto es una instancia de una clase o de sus subclases, type() devuelve el tipo exacto de un objeto.
Para ilustrar la diferencia, creemos una subclase de la clase Dog y luego usemos tanto isinstance() como type() para verificar el tipo de las instancias.
Abre el editor de VS Code en el entorno de LabEx.
Modifica el archivo
type_check.pyen el directorio~/project.~/project/type_check.pyAgrega una nueva clase llamada
GermanShepherdque herede de la claseDog. Tu archivotype_check.pyahora debería verse así:class Dog: species = "Canis familiaris" def __init__(self, name, age): self.name = name self.age = age class GermanShepherd(Dog): def __init__(self, name, age, training_level): super().__init__(name, age) self.training_level = training_levelAquí,
GermanShepherdes una subclase deDog. Hereda los atributosnameyagede la claseDogy agrega un nuevo atributotraining_level.Ahora, agreguemos algo de código para usar las funciones
isinstance()ytype(). Agrega el siguiente código al final detype_check.py:## Create instances of the Dog and GermanShepherd classes buddy = Dog("Buddy", 9) sparky = GermanShepherd("Sparky", 3, "Advanced") ## Check types using isinstance() print(f"buddy isinstance Dog: {isinstance(buddy, Dog)}") print(f"sparky isinstance Dog: {isinstance(sparky, Dog)}") print(f"sparky isinstance GermanShepherd: {isinstance(sparky, GermanShepherd)}") ## Check types using type() print(f"type(buddy) == Dog: {type(buddy) == Dog}") print(f"type(sparky) == Dog: {type(sparky) == Dog}") print(f"type(sparky) == GermanShepherd: {type(sparky) == GermanShepherd}")En esta parte, creamos una instancia de la clase
Dog(buddy) y una instancia de la claseGermanShepherd(sparky). Luego usamosisinstance()ytype()para verificar sus tipos.Para ejecutar el script
type_check.py, abre una terminal en VS Code y ejecuta el siguiente comando:python type_check.pyDeberías ver la siguiente salida:
buddy isinstance Dog: True sparky isinstance Dog: True sparky isinstance GermanShepherd: True type(buddy) == Dog: True type(sparky) == Dog: False type(sparky) == GermanShepherd: TrueLa salida muestra que
isinstance(sparky, Dog)devuelveTrueporquesparkyes una instancia de la claseGermanShepherd, que es una subclase deDog. Sin embargo,type(sparky) == DogdevuelveFalseporquetype(sparky)devuelve el tipo exacto, que esGermanShepherd, noDog.
Resumen
En este laboratorio, exploraste los fundamentos de las clases y las instancias en Python. Aprendiste cómo definir una clase, incluyendo atributos de clase y atributos de instancia inicializados dentro del constructor __init__.
Luego, creaste instancias de la clase Dog, asignando valores a sus atributos específicos. Finalmente, accediste tanto a los atributos de instancia (nombre, edad) como al atributo de clase (especie) utilizando la notación de punto, demostrando cómo recuperar información asociada con objetos y sus clases.



