Clase 3/4 Curso Introducción a Python 2012

656 views

Published on

Curso de Introducción a Python de la UNPSJB

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
656
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
39
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Clase 3/4 Curso Introducción a Python 2012

  1. 1. Repaso OOP en Python Curso de Introducción a Python Clase 3 Defossé Nahuel, Pecile Lautaro UNPSJB Septiembre 2012Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  2. 2. Repaso Tipos de datos inmutables OOP en PythonSintaxis de Python Python posee una sintaxis bastante flexible, por lo cual, a veces se pueden escribir onliners o código poco legible. Para esto existen herramientas de checkeo de sintaxis 1 PEP8 2 PyFlakes 3 PyLint Todos son configurables sobre que puede ser considerado mal visto y están integrados en varias IDEs como Spyder, PyDev, Eric, PyCharm, vim-python, etc. Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  3. 3. Repaso Tipos de datos inmutables OOP en PythonLos tipo de datos inmutables son aquellos que no pueden cambiarde valor a menos que se cree uno nuevo: str Cadena, ej: ”Hola mundo!” int y float Enteros ej: 42 0.3 NoneType representa el vacío None bool solo existen dos instancias True y False tuple las tuplas son colecciones ordenadas de objetos, por ejemplo (1, 2, −2) ó ( Hola mundo , Python ) 1 1 Las tuplas además se usan para asignación múltiple y para retorno demúltiple Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  4. 4. Repaso Tipos de datos inmutables OOP en PythonTipos de datos mutables set Representa un conjunto, donde no se pueden repetir elementos. list Una lista contiene cualquier tipo de elementos y es dinámica. Ej: [ a , 1, 2] dict El diccionario es una tabla de asociación clave→valor. Ej: d = {’caballeros’:[’Arturo’, ’Lancelot’, ’Gallahad’], ’mosqueteros’:[’Aramis’, ’Athos’, ’Portos’] } Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  5. 5. Repaso Objetos OOP en Python Metodos estáticos y de claseEn esta clase nos dedicaremos por enteros a OOP.Refrescaremos conceptos ya vistos y conoceremos algunosnuevos. Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  6. 6. Repaso Objetos OOP en Python Metodos estáticos y de claseObjetos Los objetos son la abstracción de Python para los datos. Todo dato en Python está representado por un objeto o alguna relación entre dos o más objetos. Todo objeto posee una identidad, un tipo y un valor. Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  7. 7. Repaso Objetos OOP en Python Metodos estáticos y de claseIdentidad La identidad de un objeto nunca cambia una vez que ha sido creado. Para trabajar con la identidad, disponemos de la función id() y del operador is. Dos objetos diferentes pueden tener el mismo valor. Pero esto depende de la implementación de Python que estemos usando. Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  8. 8. Repaso Objetos OOP en Python Metodos estáticos y de claseTipo El tipo de un objeto determina las operaciones que podemos realizar sobre este, y también define el conjunto de valores que puede adquirir. La función type() devuelve el tipo del objeto. Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  9. 9. Repaso Objetos OOP en Python Metodos estáticos y de claseValor El valor de un objeto puede cambiar. Un objeto se denomina mutable o inmutable según cambie o no de valor respectivamente. La mutabilidad de un objeto queda definida por su tipo. Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  10. 10. Repaso Objetos OOP en Python Metodos estáticos y de claseHerencia Múltiple En Python, la herencia puede ser múltiple. En caso de que haya métodos con la misma signatura en los padres, tiene prioridad el perteneciente a la primera clase padre mencionada en la declaración de la clase hija. Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  11. 11. Repaso Objetos OOP en Python Metodos estáticos y de clasePolimorfismo Polimorfismo es la capacidad que tiene un método de saber actuar ante diferentes mensajes que puede recibir de otros objetos o de sí mismo. Duck-typing (tipado de pato): “si flota como pato y hace ’cuak!’ como un pato entonces es un pato”. Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  12. 12. Repaso Objetos OOP en Python Metodos estáticos y de claseSobrecarga de operadores Python posee un conjunto especial de nombres de método que serán llamados ante determinados operadores o funciones que se apliquen sobre los objetos. Estos métodos especiales nos permiten personalizar el comportamiento del lenguage y ampliar de manera práctica las posiblidades del mismo. Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  13. 13. Repaso Objetos OOP en Python Metodos estáticos y de clasePropiedades En Python el acceso a los atributos tanto de una clase como de una instancia se hace con el operador punto . A veces es necesario controlar el acceso a ciertos atributos, por ejemplo from datetime import datetime class Persona(object): def __init__(self, nombre, nacimiento): self.nombre = nombre self.nacimiento = nacimiento def edad(self): ’’’Retorna la edad de la persona’’’ return (datetime.today() - self.nacimiento).days / 365 Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  14. 14. Repaso Objetos OOP en Python Metodos estáticos y de clasePropiedaes Sería desable acceder a la edad como si se tratase de un atributo, aunque deba calcularse. Para esto podemos usar una propiedad 2 : @property def edad(self): ’’’Retorna la edad de la persona’’’ return (datetime.today() - nacimiento) / 365 De esta manera podemos hacer p = Persona("Eduardo", date(1976, 1, 4)) p.edad # en vez de p.edad() 2 El caracter @ se usa para decorar código Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  15. 15. Repaso Objetos OOP en Python Metodos estáticos y de clasePropiedades como getter/setter Las propiedades se comportan como los getters/setters de otros lenguajes y no es necesario cambiar la forma de acceso a los atributos! Supongamos que debemos controlar el valor con asignado a un atributo de una instancia, en este ejemplo no hay control sobre los valores: class PuntoGeo(object): def __init__(self, lat, lng): ’’’ Latitud y longitud ’’’ self.lat = lat self.lng = lng def __str__(self): return "%.3f %.3f" % (self.lat, self.lng) Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  16. 16. Repaso Objetos OOP en Python Metodos estáticos y de clasePara definir el setter usamos el siguiente decorador: _lat = None @property def lat(self): return self._lat @lat.setter def lat(self, value): if not -90 <= value <= 90: raise ValueError("Valor fuera de rango" ": %s" % value) self._lat = valueDe esta manera accedemos al primer método como getter cuandopedimos la latitud y al segundo cuando se la asignamos.No es necesario usar setLat(valor) Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  17. 17. Repaso Objetos OOP en Python Metodos estáticos y de claseMétodos de clase En Python los atributos estáticos se definen con el decorador @classmethod , estos reciben la clase en vez de la instancia como su primer argumento. class A(object): @classmethod def metodo_de_clase(cls): print "No necesito ser instanciado" Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python
  18. 18. Repaso Objetos OOP en Python Metodos estáticos y de claseMétodos estáticos Los métodos estáticos en Python son aquellos que no reciben nada como primer argumento. Se comportan como funciones bajo el ámbito de nombres de la clase. class B(object): @staticmethod def metodo_estatico(): print "Soy una funcion comun " "dentro de una clase" Defossé Nahuel, Pecile Lautaro Curso de Introducción a Python

×