Crear clases y definir objetos en Python 3 es fundamental para la programación orientada a objetos, una metodología que organiza el código en torno a objetos que representan entidades del mundo real. En Python, la creación de clases y la definición de objetos es bastante sencilla y flexible.
Para comenzar, se utiliza la palabra clave class
seguida del nombre de la clase. Por ejemplo, para crear una clase llamada Persona
, haríamos lo siguiente:

pythonclass Persona:
pass
En este caso, Persona
es el nombre de la clase. El cuerpo de la clase, indicado por la sangría, puede contener atributos (variables asociadas a la clase) y métodos (funciones asociadas a la clase).
Los atributos se definen dentro de la clase y representan las características o propiedades de los objetos de esa clase. Por ejemplo, podríamos agregar atributos como nombre
y edad
a nuestra clase Persona
:
pythonclass Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
Aquí, __init__
es un método especial llamado constructor. Se llama automáticamente cuando se crea un nuevo objeto de la clase y se utiliza para inicializar los atributos del objeto. El parámetro self
hace referencia al propio objeto y se utiliza para acceder a sus atributos y métodos dentro de la clase.
Ahora que hemos definido la clase Persona
con atributos nombre
y edad
, podemos crear objetos (instancias) de esta clase. Por ejemplo:
pythonpersona1 = Persona("Juan", 30)
persona2 = Persona("María", 25)
Aquí, persona1
y persona2
son dos objetos distintos de la clase Persona
, cada uno con su propio conjunto de atributos.
Además de los atributos, las clases pueden contener métodos, que son funciones asociadas a la clase y que pueden realizar operaciones sobre los objetos de esa clase. Por ejemplo, podríamos agregar un método saludar
a nuestra clase Persona
:
pythonclass Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
def saludar(self):
print("Hola, me llamo", self.nombre, "y tengo", self.edad, "años.")
Ahora, podemos llamar al método saludar
en nuestros objetos persona1
y persona2
:
pythonpersona1.saludar() persona2.saludar()
Este código imprimirá:
cssHola, me llamo Juan y tengo 30 años.
Hola, me llamo María y tengo 25 años.
Así es como se crean clases y se definen objetos en Python 3. La programación orientada a objetos es una herramienta poderosa que permite organizar y estructurar el código de manera más eficiente, facilitando la reutilización y la modularidad del código.
Más Informaciones
Por supuesto, profundicemos más en la creación de clases y definición de objetos en Python 3.
Cuando creamos una clase en Python, podemos definir varios elementos dentro de ella, incluyendo métodos especiales, métodos estáticos, métodos de clase y propiedades. Estos elementos agregan funcionalidades adicionales a nuestras clases y objetos.
-
Métodos Especiales:
Python tiene una serie de métodos especiales que comienzan y terminan con doble guion bajo (__
). Estos métodos se utilizan para realizar operaciones específicas, como la inicialización de objetos (__init__
), la representación de objetos (__str__
), la comparación de objetos (__eq__
,__lt__
, etc.), entre otros. Por ejemplo:pythonclass Persona: def __init__(self, nombre, edad): self.nombre = nombre self.edad = edad def __str__(self): return f"Persona: {self.nombre}, {self.edad} años"
El método
__str__
devuelve una representación de cadena legible del objeto, que se utiliza cuando llamamos aprint(persona)
. -
Métodos Estáticos:
Los métodos estáticos se definen con el decorador@staticmethod
y no reciben el parámetroself
. Estos métodos no pueden acceder a los atributos de la instancia ni modificarlos, y generalmente se utilizan para funcionalidades que no dependen del estado del objeto. Por ejemplo:pythonclass Calculadora: @staticmethod def sumar(a, b): return a + b
Podemos llamar al método estático sin crear una instancia de la clase:
Calculadora.sumar(5, 3)
. -
Métodos de Clase:
Los métodos de clase se definen con el decorador@classmethod
y reciben un primer parámetro que tradicionalmente se llamacls
y hace referencia a la propia clase. Estos métodos pueden acceder y modificar los atributos de la clase, y se utilizan a menudo como métodos alternativos de inicialización. Por ejemplo:pythonclass Circulo: PI = 3.14159 @classmethod def crear_circulo(cls, radio): return cls(cls.PI * radio ** 2) def __init__(self, area): self.area = area
Podemos crear un círculo utilizando el método de clase:
circulo = Circulo.crear_circulo(5)
. -
Propiedades:
Las propiedades nos permiten definir métodos que se comportan como atributos, lo que nos da más control sobre cómo se accede y modifica un valor. Se definen utilizando los decoradores@property
,@propiedad.setter
y@propiedad.deleter
. Por ejemplo:pythonclass Rectangulo: def __init__(self, ancho, alto): self._ancho = ancho self._alto = alto @property def area(self): return self._ancho * self._alto @property def ancho(self): return self._ancho @ancho.setter def ancho(self, valor): if valor > 0: self._ancho = valor else: raise ValueError("El ancho debe ser mayor que cero") @property def alto(self): return self._alto @alto.setter def alto(self, valor): if valor > 0: self._alto = valor else: raise ValueError("El alto debe ser mayor que cero")
Ahora podemos acceder al área, ancho y alto como si fueran atributos:
rectangulo = Rectangulo(3, 4)
,print(rectangulo.area)
.
Estos son solo algunos ejemplos de cómo podemos enriquecer nuestras clases en Python utilizando métodos especiales, métodos estáticos, métodos de clase y propiedades. La flexibilidad del lenguaje Python nos permite diseñar nuestras clases de acuerdo a las necesidades específicas de nuestra aplicación.