Document related concepts
no text concepts found
Transcript
Python y sus métodos mágicos Abstract En Python existen métodos con significados especiales, cuyos nombres siempre comienzan y terminan con dos guiones bajos. La idea de esta charla es entender que son esos métodos y encontrarles un uso práctico, especialmente, en la programación orientada a objetos. En esta charla veremos como utilizar dichos métodos para que nuestras clases se comporten de manera mas intuitiva, y escribir código mas elegante. Descripción Los asistentes aprenderán como hacer que sus clases se comporten de manera mas intuitiva, usando los operadores de comparación o aritméticos, escribiendo de esa manera código mas elegante. Esta charla no espera ser una referencia de la totalidad de dichos métodos, sino de una selección de los que, dan una solución práctica a problemas comunes o cotidianos. Los temas de la charla se encontrarán divididos en las siguientes secciones: * Introducción - ¿Quién soy? - ¿Que son los métodos mágicos? * ¿Para qué sirven y cómo se clasifican? - Operadores aritméticos (__add__, __sub__, __mul__, __div__, etc). - Operadores de comparación (__cmp__, __eq__, __lt__, __gt__, etc). - Context managers (__enter__, __exit__, ej: with open('archivo.txt') as archivo:). - Acceso a atributos (__getattr__, __setattr__, __delattr__, etc). - Constructores/inicialización (__new__, __init__, __del__). - Representación de las clases (__str__, __repr__, __unicode__, etc). - Secuencias/Diccionarios (__len__, __getitem__, __setitem__, __iter__, etc). - Descriptores de archivos (__get__, __set__, __delete__). * ¿Como usarlos en nuestro código? (Secciones on ejemplos de código) - Representando nuestra clase. - Usando los operadores de comparación, para comparar objetos de nuestras clases. - Controlando el acceso a atributos. - Hacer que nuestra clase sea secuenciable. - Hacer que nuestra clase sea accesible por claves, como un diccionario - Implementar descriptores de archivos. - Implementar "context managers". * Conclusión * ¿Preguntas? Bibliografía: * http://docs.python.org/reference/datamodel.html#specialnames * http://www.gulic.org/almacen/diveintopython-5.4es/object_oriented_framework/special_class_methods.html