Método constructor
Una peculiaridad interesante que tienen los objetos, es que al crearse pueden recibir unos valores iniciales para establecerlos en sus posibles atributos internos. Esto es gracias a un método especial de las clases llamado constructor:
objetos.py
class Galleta:
sabor = "dulce"
chocolate = False
def __init__(self):
print("Soy una galletita recién horneada")
galleta = Galleta()
Si quisiéramos establecer los valores iniciales de los atributos sabor y chocolate sería tan sencillo como definirlos como parámetros y enviarlos durante la instanciación:
class Galleta:
sabor = "dulce"
chocolate = False
def __init__(self, sabor, chocolate):
self.sabor = sabor
self.chocolate = chocolate
print("Soy una galletita recién horneada")
def chocolatear(self):
self.chocolate = True
# galleta = Galleta("Salada", False)
galleta = Galleta(sabor="Salada", chocolate=False)
print(galleta.sabor)
print(galleta.chocolate)
Si utilizamos este método tendremos que enviar siempre los dos valores u ocurrirá un error:
galleta = Galleta()
Podemos solucionarlo añadiendo un valor por defecto igual que ocurre con los parámetos de las funciones:
def __init__(self, sabor="dulce", chocolate=False):
Sin embargo al hacer esto los atributos de clase pierden su sentido, por eso no casi nunca se suelen utilizar:
class Galleta:
def __init__(self, sabor="dulce", chocolate=False):
self.sabor = sabor
self.chocolate = chocolate
print("Soy una galletita recién horneada")
def chocolatear(self):
self.chocolate = True
galleta = Galleta()
print(galleta.sabor)
print(galleta.chocolate)