Clases vs Objetos
Parte de la sección Object Oriented Programming del Journey de Python de Coddy — lección 3 de 64.
Las clases y los objetos sirven para propósitos diferentes. Una clase es un plano, mientras que un objeto es lo que construyes a partir de ese plano.
Aquí hay un ejemplo de una clase:
class Dog:
# compartido por todos los perros
species = "Canis familiaris"Ahora podemos acceder al atributo de clase directamente usando Dog.species donde Dog es el nombre de la clase:
print(f"Class species: {Dog.species}")
# Especie de la clase: Canis familiarisEsto accede a los datos de la propia clase, no de ningún objeto específico.
Ahora exploremos cómo funciona en los objetos. Crea objetos a partir de la clase Dog:
dog1 = Dog()
dog2 = Dog()Los objetos pueden tener atributos individuales que las clases no pueden:
dog1.name = "Nicky"
dog1.breed = "Siberian Husky"
dog2.name = "Teemon"
dog2.breed = "Shu'ali"Compara lo que las clases y los objetos pueden hacer:
print(f"Object 1: {dog1.name} is a {dog1.breed}")
print(f"Object 2: {dog2.name} is a {dog2.breed}")
print(f"Both share class attribute: {Dog.species}")Salida:
Object 1: Nicky is a Siberian Husky
Object 2: Teemon is a Shu'ali
Both share class attribute: Canis familiarisDiferencia clave: La clase Dog define lo que todos los perros tienen en común, mientras que los objetos dog1 y dog2 representan perros específicos e individuales con propiedades únicas.
Desafío
FácilCompleta el código para crear una clase Student y dos objetos de estudiante. Agrega diferentes nombres y calificaciones a cada estudiante.
student.py: Aquí es donde definirás tu claseStudent.driver.py: Archivo de ejecución principal que importará y utilizará tu clase Student:Completa el código para crear una clase
Studenty dos objetos de estudiante. Agrega diferentes nombres y calificaciones a cada estudiante.El nombre de student1 es
"Alice"con la calificación"A".El nombre de student2 es
"Bob"con la calificación"B".
Hoja de referencia
Una clase es un plano que define atributos y comportamientos compartidos. Un objeto es una instancia creada a partir de esa clase con propiedades individuales.
Define una clase:
class Dog:
# Atributo de clase - compartido por todas las instancias
species = "Canis familiaris"Accede a los atributos de clase directamente:
print(Dog.species) # Canis familiarisCrea objetos a partir de una clase:
dog1 = Dog()
dog2 = Dog()Agrega atributos individuales a los objetos:
dog1.name = "Nicky"
dog1.breed = "Siberian Husky"
dog2.name = "Teemon"
dog2.breed = "Shu'ali"Los objetos pueden acceder tanto a sus atributos individuales como a los atributos de clase:
print(f"{dog1.name} is a {dog1.breed}") # Atributos individuales
print(f"Species: {Dog.species}") # Atributo de clasePruébalo tú mismo
# Importar la clase Student
from student import Student
# TODO: Crear dos objetos de estudiante
# TODO: Añadir atributos a student1
# TODO: Añadir atributos a student2
# Imprimir la información del estudiante
print(f"{student1.name} has grade {student1.grade} at {Student.school}")
print(f"{student2.name} has grade {student2.grade} at {Student.school}")Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Object Oriented Programming
1Fundamentos de la POO
Archivos externosIntroducción a la POOClases vs ObjetosEl parámetro selfMétodosAtributosMétodo constructor (__init__)Resumen - Calculadora simple4Herencia
Herencia básicaLa función super()Sobrescritura de métodosHerencia múltipleOrden de resolución de métodosResumen - Jerarquía de empleados7Métodos especiales
Introducción a los métodos mágicosSobrecarga de operadoresMétodos mágicos de contenedoresRepaso - Lista personalizada10Patrones de diseño Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón Strategy2Decoradores
Introducción a los decoradoresDecorador propertyDecorador de métodos estáticosDecorador de métodos de clase5Polimorfismo
Sobreescritura de métodos revisitadaDuck TypingClases y métodos abstractosDiseño de interfacesResumen - Calculadora de figuras8Conceptos avanzados de POO
Composición vs. HerenciaMixinsMétodos estáticos y de claseDecoradores de claseGestores de contexto11Patrones de diseño, parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón Composite3Propiedades de clase
Variables de instancia vs de claseDecoradores de propiedadesAtributos privadosResumen - Gestor de cuentas bancarias