Description
Esta charla explora diferentes conceptos y técnicas fundamentales para hacer idiomáticas y elegantes nuestras clases programadas en Python. La mayoría de nosotros utiliza la orientación a objetos, pero desconocer qué hace exactamente el método mágico __new__() o lo útil que resulta la función collections.namedtuple() puede hacer que nuestro código sea innecesariamente feo o complejo. También aprenderemos detalles que pueden evitarnos más de un bug, como por ejemplo a no delegar en __del__() la liberación de recursos, cuando esta es una tarea que debería confiarse a with, o cómo implementar correctamente __hash__().
Hay también tiempo para discutir asuntos casi filosóficos, como por qué quizás deberíamos llamar a __init__() inicializador en vez de constructor (ya que es __new__() quien realmente crea el nuevo objeto) o cuál es en la práctica la diferencia entre __str__() y __repr__(), a menudo usados indistintamente.
Algunos conceptos avanzados, como qué son los descriptores o una introducción a las metaclases (esas grandes desconocidas) se exponen en la recta final, antes de cerrar con algunos ejemplos rápidos bastante útiles — como, por ejemplo, cómo podemos aplicar lo aprendido para heredar de un array de NumPy.