Fundamentos de Programación y Python

1

¿Por qué aprender Python?

2

Introducción a Python

3

Conceptos Básicos de Programación

4

Práctica: Te doy la bienvenida a los ejercicios interactivos

5

Manipulación de Cadenas de Texto en Python

6

Enteros, Flotantes y Booleanos

7

Todo lo que Debes Saber sobre print en Python

8

Operaciones Matemáticas en Python

9

Operaciones de Entrada/Salida en Consola

Colección y Procesamiento de Datos en Python

10

Listas

11

Método slice

12

Listas de más dimensiones y Tuplas

13

Aplicación de Matrices

14

Diccionarios

15

Comprehension Lists en Python (CLASE NUEVA)

Control de Flujo en Python

16

Estructuras condicionales

17

Bucles y Control de Iteraciones

18

Generadores e Iteradores

Funciones y Manejo de Excepciones en Python

19

Uso de Funciones en Python

20

Funciones Lambda y Programación Funcional en Python

21

¿Cómo realizar una función recursiva en Python?

22

Manejo de Excepciones y Uso de Pass (CLASE NUEVA)

Programación Orientada a Objetos en Python

23

Fundamentos de Programación Orientada a Objetos en Python

24

Ejercicio Biblioteca con POO

25

Herencia en POO con Python

26

Objetos heredados

27

Los 4 pilares de la programacion orientada a objetos

28

Uso de super() en Python (CLASE NUEVA)

29

Superando los Fundamentos de Programación Orientada a Objetos en Python

Lectura y escritura de archivos

30

Manejo de Archivos .TXT (CLASE NUEVA)

31

Manejo de Archivos CSV (CLASE NUEVA)

32

Manejo de Archivos JSON (CLASE NUEVA)

Biblioteca estándar de Python

33

Librería Statistics y Análisis Estadístico (CLASE NUEVA)

34

Biblioteca estándar en Python (CLASE NUEVA)

35

Librería Os, Math y Random (CLASE NUEVA)

36

Proyecto final: Guerra naval

Conceptos avanzados de Python

37

Recapitulación de lo aprendido hasta ahora

38

Escribir código Pythonico y profesional

39

Comentarios y Docstrings en Python

40

Scope y closures: variables locales y globales

41

Anotaciones de tipo

42

Validación de tipos en métodos

43

Librería Collections y Enumeraciones

Decoradores

44

Decoradores en Python

45

Decoradores anidados y con parámetros

46

Uso de Decoradores en clases y métodos

Métodos y estructura de clases en Python

47

Métodos mágicos

48

Sobrecarga de operadores

49

Implementación de `if __name__ == "__main__":`

50

Metaprogramación en Python

51

Uso de *args y **kwargs

52

Métodos privados y protegidos

53

Gestión avanzada de propiedades

54

Métodos estáticos y de clase avanzados

Programación concurrente y asíncrona

55

Introducción a la concurrencia y paralelismo

56

Threading y multiprocessing en Python

57

Asincronismo con asyncio

58

Asincronismo y concurrencia

Creación de módulos y paquetes

59

Creación de módulos en Python

60

Gestión de paquetes

61

Publicación de paquetes en PyPI

Proyecto final

62

Implementación de un sistema completo

63

Implementación de un Sistema Completo

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Python

Curso de Python

Carli Code

Carli Code

Validación de tipos en métodos

42/63
Recursos

Aportes 6

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

La validación de tipos en métodos en Python es una práctica que se utiliza para asegurar que los argumentos de las funciones o métodos tienen los tipos esperados. Esto puede ayudar a prevenir errores en tiempo de ejecución y facilitar la comprensión del código. A continuación, se presentan varias maneras de implementar la validación de tipos en métodos: \### 1. Anotaciones de Tipo Desde Python 3.5, se pueden utilizar anotaciones de tipo para indicar qué tipos de datos se esperan como argumentos y qué tipo se devolverá. Sin embargo, estas anotaciones son solo sugerencias y no imponen la validación de tipos en tiempo de ejecución. Aún así, se pueden usar herramientas como `mypy` para comprobar las anotaciones de tipo. ```python def add(a: int, b: int) -> int: return a + b print(add(5, 10)) # Salida: 15 ``` \### 2. Validación Manual de Tipos Si deseas realizar la validación de tipos en tiempo de ejecución, puedes hacerlo utilizando `isinstance` dentro del método. ```python def add(a: int, b: int) -> int: if not isinstance(a, int) or not isinstance(b, int): raise TypeError("Los argumentos deben ser enteros.") return a + b try: print(add(5, 10)) # Salida: 15 print(add(5, '10')) # Esto generará un TypeError except TypeError as e: print(e) # Salida: Los argumentos deben ser enteros. ``` \### 3. Uso de Decoradores También puedes crear un decorador para manejar la validación de tipos en múltiples funciones o métodos, lo que hace que tu código sea más limpio y reutilizable. ```python def type\_check(\*arg\_types): def decorator(func): def wrapper(\*args): for a, t in zip(args, arg\_types): if not isinstance(a, t): raise TypeError(f"Argumento {a} no es de tipo {t.\_\_name\_\_}.") return func(\*args) return wrapper return decorator @type\_check(int, int) def add(a, b): return a + b try: print(add(5, 10)) # Salida: 15 print(add(5, '10')) # Esto generará un TypeError except TypeError as e: print(e) # Salida: Argumento 10 no es de tipo int. ``` \### 4. Librerías de Validación Existen librerías externas como `pydantic` y `attrs` que pueden ayudarte a manejar la validación de tipos y la creación de clases de forma más robusta y concisa. \#### Ejemplo con Pydantic ```python from pydantic import BaseModel class Item(BaseModel): name: str price: float item = Item(name="Libro", price=12.99) print(item) ``` \### Conclusión La validación de tipos es una práctica importante en Python para asegurar la calidad y la robustez del código. Puedes optar por usar anotaciones de tipo junto con herramientas de análisis estático, o bien implementar validaciones manuales o usar decoradores para garantizar que los métodos reciban los tipos de datos esperados.
Buenas tardes, profesora y compañeros. La clase está mal grabada. En el minuto 11:06, mientras explica la aplicación usando Try, de pronto salta, no apareciendo las líneas que antes había escrito.
```js def divide(a: int, b: int) -> float: #Validar que los parametros sean enteros if not isinstance(a, int) or not isinstance(b, int): raise TypeError("Ambos parametros deben ser enteros") #Verificamos que el divisor no sea cero if b == 0: raise ValueError("El divisor no puede ser cero") return a/b #Ejemplo de uso try: res = divide(10, 2) print(res) except (ValueError, TypeError) as e: print(f"Error: {e}") ```def divide(a: int, b: int) -> float:    *#Validar que los parametros sean enteros*    *if* not isinstance(a, int) or not isinstance(b, int):        *raise* TypeError("Ambos parametros deben ser enteros")        *#Verificamos que el divisor no sea cero*    *if* b == 0:        *raise* ValueError("El divisor no puede ser cero")        *return* a/b *#Ejemplo de usotry*:    res = divide(10, 2)     print(res)*except* (ValueError, TypeError) *as* e:    print(f"Error: {e}")
El video quedo mal editado en la parte del try pero no se asusten. Unos minutos más adelante retoman nuevamente.
Si bien la instrucción isinstance( ) puede realizar más acciones que Type( ), la realidad es que el código propuesto por la profesora puede escribirse con esta última, pues no se están usando subclases. En efecto, la línea 3 de su código se reemplaza fácilmente como se muestra a continuación: ![](https://static.platzi.com/media/user_upload/C%C3%B3digo%20modificado-7d8c5f44-569e-4b40-b95d-80f229552a47.jpg)
Un Ejemplo en codigo usando las Anotaciones de Tipo y las Validacion de tipos en metodos: ```python from typing import Union class Calculadora: def sumar(self, a: Union[int, float], b: Union[int, float]) -> Union[int, float]: if not isinstance(a, (int, float)) or not isinstance(b, (int, float)): raise TypeError("Los argumentos deben ser int o float") return a + b calc = Calculadora() resultado = calc.sumar(10, 5.5) print(resultado) ```from typing import Union class Calculadora: def sumar(self, a: Union\[int, float], b: Union\[int, float]) -> Union\[int, float]: if not isinstance(a, (int, float)) or not isinstance(b, (int, float)): raise TypeError("Los argumentos deben ser int o float") return a + b \# Uso del método calc = Calculadora() resultado = calc.sumar(10, 5.5) print(resultado) # Salida: 15.5