67 lines
1.2 KiB
Python
67 lines
1.2 KiB
Python
|
"""
|
||
|
Métodos especiales
|
||
|
|
||
|
Se han visto:
|
||
|
__init__
|
||
|
__mro__
|
||
|
__bases__
|
||
|
__subclasses__
|
||
|
|
||
|
Vamos a ver:
|
||
|
__str__
|
||
|
__len__
|
||
|
"""
|
||
|
|
||
|
mi_lista = [1, 1, 1, 1, 1, 1, 1, 1]
|
||
|
|
||
|
# print(len(mi_lista))
|
||
|
|
||
|
|
||
|
class Objeto:
|
||
|
pass
|
||
|
|
||
|
|
||
|
mi_objeto = Objeto()
|
||
|
# No se puede aplicar len
|
||
|
# print(len(mi_objeto))
|
||
|
|
||
|
# Tampoco podemos ver el objeto
|
||
|
# print(mi_objeto)
|
||
|
|
||
|
# Otro ejemplo
|
||
|
|
||
|
|
||
|
class CD:
|
||
|
def __init__(self, autor, titulo, canciones):
|
||
|
self.autor = autor
|
||
|
self.titulo = titulo
|
||
|
self.canciones = canciones
|
||
|
|
||
|
# Vamos a modif el comportamiento del método especial __str__
|
||
|
# cada vez que se llame para mostrar lo que se quiera
|
||
|
def __str__(self):
|
||
|
return f'Albun: {self.titulo} de {self.autor}'
|
||
|
|
||
|
# Comportamiento de len
|
||
|
def __len__(self):
|
||
|
return self.canciones
|
||
|
|
||
|
# Podemos añadir un mensaje cuando usemos la función del
|
||
|
def __del__(self):
|
||
|
print("Se ha eliminado el cd")
|
||
|
|
||
|
|
||
|
mi_cd = CD('Pink Floyd', 'The Wall', 24)
|
||
|
|
||
|
# Ahora sí que veremos el return modificado
|
||
|
print(mi_cd)
|
||
|
|
||
|
# También len, hemos modificado su uso para
|
||
|
# que muestre el número de canciones
|
||
|
print(len(mi_cd))
|
||
|
|
||
|
# Podemos eliminar con la función del
|
||
|
del mi_cd
|
||
|
# Si lo intentamos imprimir nos dirá que no existe
|
||
|
# print(mi_cd)
|