Clases y funciones

Clases y objetos

1. Hora 2. Funciones puras 3. Modificadores 4. Resumen 5. ¿Qué es mejor? 6. Anexos 6.1. Decorador @staticmethod 1. Hora Como otro ejemplo de un tipo definido por el usuario, definiremos una clase llamada Hora que registra la hora del día. La definición de la clase es como sigue: class Hora: pass Podemos crear un nuevo objeto Hora y asignar atributos para contener las horas, minutos y segundos: []

Glosario

Clases y objetos

clase: Un tipo compuesto definido por el usuario. También se puede pensar en una clase como una plantilla para los objetos que son instancias de la misma. instanciar: Crear una instancia de una clase. instancia: Un objeto que pertenece a una clase. objeto: Un tipo de dato compuesto que suele usarse para representar una cosa o concepto del mundo real. constructor: Un método usado para crear nuevos objetos. atributo: Uno de los elementos de datos con nombre que constituyen una instancia. []

Copiado

Clases y objetos

1. Introducción 2. Copia superficial (shallow copy) 3. Copia profunda (deep copy) 4. Comparativa y puntos clave 1. Introducción El uso de alias puede hacer que un programa sea difícil de leer, porque los cambios hechos en un lugar pueden tener efectos inesperados en otro lugar. Es difícil estar al tanto de todas las variables a las que puede apuntar un objeto dado. # Crear una lista lista_original = [1, 2, 3] # Crear un alias de la lista alias_lista = lista_original # Modificar el alias alias_lista. []

Los objetos son mutables

Clases y objetos

1. Introducción 1. Introducción Podemos cambiar el estado de un objeto efectuando una asignación sobre uno de sus atributos. Por ejemplo, para cambiar el tamaño de un rectángulo sin cambiar su posición, podemos cambiar los valores de anchura y altura: caja.anchura = caja.anchura + 50 caja.altura = caja.altura + 100 Podemos encapsular este código en un método y generalizarlo para agrandar el rectángulo en cualquier cantidad: []

Instancias como valores de retorno

Clases y objetos

1. Introducción 2. Ejemplo 1. Introducción Las funciones pueden devolver instancias. Por ejemplo, encuentraCentro acepta un Rectangulo como argumento y devuelve un Punto que contiene las coordenadas del centro del Rectangulo: def encuentraCentro(caja): p = Punto() p.x = caja.esquina.x + caja.anchura/2.0 p.y = caja.esquina.y + caja.altura/2.0 return p Para llamar a esta función, pase caja como argumento y asigne el resultado a una variable: centro = encuentraCentro(caja) imprimePunto(centro) # (50. []

Rectangulos

Clases y objetos

Digamos que queremos una clase que represente un rectángulo. La pregunta es, ¿qué información tenemos que proporcionar para definir un rectángulo? Para simplificar las cosas, supongamos que el rectángulo está orientado vertical u horizontalmente, nunca en diagonal. Tenemos varias posibilidades: podemos señalar el centro del rectángulo (dos coordenadas) y su tamaño (anchura y altura); o podemos señalar una de las esquinas y el tamaño; o podemos señalar dos esquinas opuestas. Un modo convencional es señalar la esquina superior izquierda del rectángulo y el tamaño. []

Mismidad

Clases y objetos

1. Introducción 2. Comparación de igualdad 3. Ejemplo de igualdad superficial 4. Notas importantes 5. Referencias 1. Introducción En Python, la igualdad superficial entre objetos se refiere a la comparación de los valores de los atributos de esos objetos en lugar de su identidad en memoria. Es decir, dos objetos pueden ser considerados iguales si sus atributos tienen los mismos valores, incluso si son instancias diferentes en la memoria. []

Instancias como parámetro de una función

Clases y objetos

1. Ejercicio Puedes pasar una instancia como parámetro de la forma habitual. Por ejemplo: src/punto.py class Punto: x,y = 1,0 def imprimePunto(p): print('(' + str(p.x) + ', ' + str(p.y) + ')') blanco = Punto() # Objeto instancia de clase imprimePunto(blanco) # (1,0) NOTA: Los atributos de un objeto modificados dentro de una función también modifican esos atributos en el objeto que se pasa como argumento en el programa principal, esto no pasa con las variables, haz una prueba. []

Atributos

Clases y objetos

Podemos añadir nuevos datos a una instancia utilizando la notación de punto. Por ejemplo, si tenemos un objeto blanco de la clase Punto, podemos asignarle valores a sus atributos de la siguiente manera: src/punto.py blanco.x = 12.1 blanco.y = 7 Esta sintaxis es análoga a la que usaríamos para acceder a una variable de un módulo, como math.pi o string.ascii_uppercase. Sin embargo, en este caso, estamos accediendo a los atributos de una instancia. []

Tipos compuestos definidos por el usuario

Clases y objetos

1. DEFINIR UNA CLASE BÁSICA 2. EJEMPLO PASO A PASO 2.1. Crear una clase 2.2. Objeto: Instancia de la clase 2.3. Sobrecarga de métodos 2.4. Métodos de objetos 2.5. El parámetro self 2.6. Modificar las propiedades de los objetos 2.7. Eliminar las propiedades de los objetos 2.8. Eliminar objetos 2.9. La sentencia pass 3. REFERENCIAS 1. DEFINIR UNA CLASE BÁSICA Una vez que hemos trabajado con algunos de los tipos de datos incorporados en Python, es momento de definir nuestro propio tipo de dato: el Punto. []