Función type() de Python
Funciones integradas de Python3
type()Es una función integrada de Python para obtener el tipo de un objeto.
type()Es una de las funciones más utilizadas en Python, nos ayuda a conocer el tipo de un objeto y es una herramienta muy importante en lenguajes de tipado dinámico.
Significado del término: type 意为"类型",用于获取对象的类型信息。
Sintaxis básica y parámetros
Formato de sintaxis
type(object) type(name, bases, dict)
Descripción de parámetros
- Parámetro object:
- Tipo: cualquier objeto
- Descripción: El objeto cuyo tipo se desea obtener.
- Parámetros name, bases, dict:
- Tipo: cadena, tupla de clases, diccionario
- Descripción: Se utilizan para crear clases dinámicamente.
Descripción de la función
- Valor de retorno: Devuelve el tipo del objeto (un objeto type).
Ejemplos
Ejemplo 1: Obtener el tipo de objeto
Ejemplo
# Obtener el tipo de los tipos básicos
print(type(123)) # Salida: <class 'int'>
print(type(3.14)) # Salida: <class 'float'>
print(type("hello")) # Salida: <class 'str'>
print(type(True)) # Salida: <class 'bool'>
print(type([1, 2, 3])) # Salida: <class 'list'>
print(type({"a": 1})) # Salida: <class 'dict'>
print(type((1, 2))) # Salida: <class 'tuple'>
print(type({1, 2})) # Salida: <class 'set'>
# El tipo de None
print(type(None)) # Salida: <class 'NoneType'>
print(type(123)) # Salida: <class 'int'>
print(type(3.14)) # Salida: <class 'float'>
print(type("hello")) # Salida: <class 'str'>
print(type(True)) # Salida: <class 'bool'>
print(type([1, 2, 3])) # Salida: <class 'list'>
print(type({"a": 1})) # Salida: <class 'dict'>
print(type((1, 2))) # Salida: <class 'tuple'>
print(type({1, 2})) # Salida: <class 'set'>
# El tipo de None
print(type(None)) # Salida: <class 'NoneType'>
Resultado esperado:
<class 'int'> <class 'float'> <class 'str'> <class 'bool'> <class 'list'> <class 'dict'> <class 'tuple'> <class 'set'> <class 'NoneType'>
Análisis del código:
type()Devuelve el objeto de tipo del objeto.- Cada tipo en sí mismo es también una instancia de la clase type.
Ejemplo 2: Comparar tipos
Ejemplo
# Comparación directa
value = 42
print(type(value) == int) # Salida: True
print(type(value) == str) # Salida: False
# Usar isinstance (recomendado)
print(isinstance(42, int)) # Salida: True
print(isinstance("hello", str)) # Salida: True
print(isinstance(42, (int, float))) # Salida: True
# Comprobar clases personalizadas
class Dog:
pass
class Cat:
pass
dog = Dog()
print(type(dog) == Dog) # Salida: True
print(type(dog) == Cat) # Salida: False
print(isinstance(dog, Dog)) # Salida: True
value = 42
print(type(value) == int) # Salida: True
print(type(value) == str) # Salida: False
# Usar isinstance (recomendado)
print(isinstance(42, int)) # Salida: True
print(isinstance("hello", str)) # Salida: True
print(isinstance(42, (int, float))) # Salida: True
# Comprobar clases personalizadas
class Dog:
pass
class Cat:
pass
dog = Dog()
print(type(dog) == Dog) # Salida: True
print(type(dog) == Cat) # Salida: False
print(isinstance(dog, Dog)) # Salida: True
Resultado esperado:
True False True True True True False True
Análisis del código:
- Se puede utilizar
type() ==para realizar una comparación precisa de tipos. - Pero se recomienda más usar
isinstance(), porque admite herencia.
Ejemplo 3: Crear clases dinámicamente
Ejemplo
# Crear una clase dinámicamente con type()
Person = type("Person", (), {
"name": "Desconocido",
"age": 0,
"greet": lambda self: f"Hola, soy {self.name}"
})
# Usar la clase creada dinámicamente
p = Person()
p.name = "Tom"
print(p.name) # Salida: Tom
print(p.greet()) # Salida: Hola, soy Tom
# Crear una clase con herencia
class Animal:
def speak(self):
return "..."
class Dog(Animal):
def speak(self):
return "¡Guau!"
DogClass = type("DogClass", (Animal,), {
"speak": lambda self: "¡Guau!"
})
dog = DogClass()
print(dog.speak()) # Salida: ¡Guau!
print(isinstance(dog, Animal)) # Salida: True
Person = type("Person", (), {
"name": "Desconocido",
"age": 0,
"greet": lambda self: f"Hola, soy {self.name}"
})
# Usar la clase creada dinámicamente
p = Person()
p.name = "Tom"
print(p.name) # Salida: Tom
print(p.greet()) # Salida: Hola, soy Tom
# Crear una clase con herencia
class Animal:
def speak(self):
return "..."
class Dog(Animal):
def speak(self):
return "¡Guau!"
DogClass = type("DogClass", (Animal,), {
"speak": lambda self: "¡Guau!"
})
dog = DogClass()
print(dog.speak()) # Salida: ¡Guau!
print(isinstance(dog, Animal)) # Salida: True
Resultado esperado:
La creación dinámica de clases se usa poco en la programación real, pero comprender esto es muy importante para la programación con metaclasses.
type()Es una de las funciones más básicas e importantes de Python.
Funciones integradas de Python3
Otras extensiones