Aprende Python · lección gratuita
Hasta ahora has usado tipos que Python ya trae (int, str, list, dict). Una clase te permite crear tus propios tipos: un molde que describe qué datos guarda y qué puede hacer un objeto. Un objeto (o instancia) es algo concreto creado a partir de ese molde. Por ejemplo, la clase Perro es el molde y mi_perro es un objeto creado con ese molde.
class define una nueva clase; el nombre se escribe en CamelCase (p. ej. Coche).__init__ es el constructor: se ejecuta automáticamente al crear el objeto.self representa al objeto actual; con self.atributo = valor guardas datos en la instancia.obj = Coche("rojo").obj.atributo.Una clase se define con la palabra clave class seguida del nombre. Dentro defines el método especial __init__, que Python llama solo al crear el objeto. Su primer parámetro siempre es self: una referencia al objeto que se está construyendo. Dentro de __init__ asignas los atributos de instancia con self.nombre = valor, de modo que cada objeto los lleve consigo.
Cuando escribes p = Persona("Ana", 30), Python crea un objeto vacío, lo pasa como self y ejecuta __init__ con los argumentos "Ana" y 30. Después puedes leer sus datos con la notación de punto: p.nombre y p.edad.
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre # atributo de instancia
self.edad = edad # atributo de instancia
p = Persona("Ana", 30) # crear un objeto
print(p.nombre) # Ana
print(p.edad) # 30
Cada objeto es independiente: si creas Persona("Luis", 25), sus atributos no afectan a los de Ana. Así modelas muchas entidades distintas con un mismo molde.
# 1) Clase simple con un atributo
class Punto:
def __init__(self, x, y):
self.x = x
self.y = y
a = Punto(2, 5)
print(a.x, a.y) # 2 5
# 2) Dos objetos independientes
class Gato:
def __init__(self, nombre):
self.nombre = nombre
g1 = Gato("Michi")
g2 = Gato("Tom")
print(g1.nombre) # Michi
print(g2.nombre) # Tom
# 3) Usar atributos en operaciones
class Rectangulo:
def __init__(self, ancho, alto):
self.ancho = ancho
self.alto = alto
r = Rectangulo(4, 3)
area = r.ancho * r.alto
print(area) # 12
# 4) Valor calculado en el constructor
class Producto:
def __init__(self, precio):
self.precio = precio
self.con_iva = precio * 1.18
prod = Producto(100)
print(prod.con_iva) # 118.0
💡 Recuerda siempreself. Olvidarselfcomo primer parámetro de__init__, o escribirnombre =en vez deself.nombre =, es el error más común al empezar con clases.
| Acción | Sintaxis |
|---|---|
| Definir clase | class Coche: |
| Constructor | def __init__(self, ...): |
| Guardar atributo | self.color = color |
| Crear objeto | c = Coche("rojo") |
| Leer atributo | c.color |
| Modificar atributo | c.color = "azul" |
| Convención de nombre | CamelCase para clases |
---