type()
El método devuelve el tipo de clase del argumento (objeto) pasado como parámetro. La función type() se usa principalmente para fines de depuración.
Se pueden pasar dos tipos diferentes de argumentos a la función type(), uno y tres argumentos. type(obj)
Si se pasa un solo argumento , devuelve el tipo de objeto dado. Si se pasan tres argumentos type(name, bases, dict)
, devuelve un nuevo tipo de objeto.
Sintaxis:
type(object)
type(name, bases, dict)
Parámetros:
name : nombre de la clase, que luego corresponde al atributo __name__ de la clase.
bases : tupla de clases de las que deriva la clase actual. Posteriormente corresponde al atributo __bases__.
dict : un diccionario que contiene los espacios de nombres para la clase. Posteriormente corresponde al atributo __dict__.
Tipo de retorno:
returns a new type class or essentially a metaclass.
Código #1:
# Python3 simple code to explain # the type() function print(type([]) is list) print(type([]) is not list) print(type(()) is tuple) print(type({}) is dict) print(type({}) is not list)
Producción :
True False True True True
Código #2:
# Python3 code to explain # the type() function # Class of type dict class DictType: DictNumber = {1:'John', 2:'Wick', 3:'Barry', 4:'Allen'} # Will print the object type # of existing class print(type(DictNumber)) # Class of type list class ListType: ListNumber = [1, 2, 3, 4, 5] # Will print the object type # of existing class print(type(ListNumber)) # Class of type tuple class TupleType: TupleNumber = ('Geeks', 'for', 'geeks') # Will print the object type # of existing class print(type(TupleNumber)) # Creating object of each class d = DictType() l = ListType() t = TupleType()
Producción :
<class 'dict'> <class 'list'> <class 'tuple'>
Código #3:
# Python3 code to explain # the type() function # Class of type dict class DictType: DictNumber = {1:'John', 2:'Wick', 3:'Barry', 4:'Allen'} # Class of type list class ListType: ListNumber = [1, 2, 3, 4, 5] # Creating object of each class d = DictType() l = ListType() # Will print accordingly whether both # the objects are of same type or not if type(d) is not type(l): print("Both class have different object type.") else: print("Same Object type")
Producción :
Both class have different object type.
Código #4: Uso detype(name, bases, dict)
# Python3 program to demonstrate # type(name, bases, dict) # New class(has no base) class with the # dynamic class initialization of type() new = type('New', (object, ), dict(var1 ='GeeksforGeeks', b = 2009)) # Print type() which returns class 'type' print(type(new)) print(vars(new)) # Base class, incorporated # in our new class class test: a = "Geeksforgeeks" b = 2009 # Dynamically initialize Newer class # It will derive from the base class test newer = type('Newer', (test, ), dict(a ='Geeks', b = 2018)) print(type(newer)) print(vars(newer))
Producción :
{'__module__': '__main__', 'var1': 'GeeksforGeeks', '__weakref__':, 'b': 2009, '__dict__': , '__doc__': None} {'b': 2018, '__doc__': None, '__module__': '__main__', 'a': 'Geeks'}
Aplicaciones:
- La función type() se utiliza básicamente para fines de depuración. Cuando se utilizan otras funciones de string como .upper(), .lower(), .split() con texto extraído de un rastreador web, es posible que no funcione porque pueden ser de un tipo diferente que no admite funciones de string. Y como resultado, seguirá arrojando errores, que son muy difíciles de depurar [Considere el error como: GeneratorType no tiene atributo lower()] . La función type() se puede usar en ese punto para determinar el tipo de texto extraído y luego cambiarlo a otras formas de string antes de usar funciones de string o cualquier otra operación en él.
- type() con tres argumentos se puede usar para inicializar dinámicamente clases o clases existentes con atributos. También se utiliza para registrar tablas de bases de datos con SQL.