We gebruiken de type() functie in Python om het type van een specifiek Python object te identificeren. Het is een zeer eenvoudige functie en gemakkelijk te begrijpen. Zonder verder oponthoud, laten we direct naar de syntax gaan.
Syntax van de Python type() functie
Python heeft veel ingebouwde functies. De type()
functie wordt gebruikt om het type van een object te krijgen.
De syntax van de Python type() functie is:
type(object)
type(name, bases, dict)
Wanneer een enkel argument wordt doorgegeven aan de type() functie, geeft het het type van het object terug. De waarde is hetzelfde als de object.__class__ instantie variabele.
Wanneer er drie argumenten worden doorgegeven, geeft het een nieuw type object terug. Het wordt gebruikt om dynamisch een klasse te creëren on the fly.
- “naam” string wordt de klassenaam. Het is hetzelfde als het __name__ attribuut van een klasse.
- “bases” tuple specificeert de basis klassen. Het is hetzelfde als het __bases__ attribuut van de klasse.
- “dict” dictionary helpt bij het creëren van de klasse body. Het is hetzelfde als het __dict__ attribuut van de klasse.
Voorbeelden van de functie type() in Python
Laten we eens kijken naar enkele voorbeelden van het gebruik van de functie type().
1. Het vinden van het type van een Python-object
x = 10
print(type(x))
s = 'abc'
print(type(s))
from collections import OrderedDict
od = OrderedDict()
print(type(od))
class Data:
pass
d = Data()
print(type(d))
Output:
<class 'int'>
<class 'str'>
<class 'collections.OrderedDict'>
<class '__main__.Data'>
Merk op dat de functie type() het type van het object retourneert met de modulenaam. Aangezien ons Python-script geen module heeft, wordt de module __main__.
2. Details extraheren uit Python-klassen
Laten we zeggen dat we de volgende klassen hebben. We zullen metadata over de klassen halen met behulp van de eigenschappen class, bases, dict en doc.
class Data:
"""Data Class"""
d_id = 10
class SubData(Data):
"""SubData Class"""
sd_id = 20
Laten we enkele eigenschappen van deze klassen afdrukken.
print(Data.__class__)
print(Data.__bases__)
print(Data.__dict__)
print(Data.__doc__)
print(SubData.__class__)
print(SubData.__bases__)
print(SubData.__dict__)
print(SubData.__doc__)
Output:
<class 'type'>
(<class 'object'>,)
{'__module__': '__main__', '__doc__': 'Data Class', 'd_id': 10, '__dict__': <attribute '__dict__' of 'Data' objects>, '__weakref__': <attribute '__weakref__' of 'Data' objects>}
Data Class
<class 'type'>
(<class '__main__.Data'>,)
{'__module__': '__main__', '__doc__': 'SubData Class', 'sd_id': 20}
SubData Class
We kunnen vergelijkbare klassen maken met behulp van de functie type().
Data1 = type('Data1', (object,), {'__doc__': 'Data1 Class', 'd_id': 10})
SubData1 = type('SubData1', (Data1,), {'__doc__': 'SubData1 Class', 'sd_id': 20})
print(Data1.__class__)
print(Data1.__bases__)
print(Data1.__dict__)
print(Data1.__doc__)
print(SubData1.__class__)
print(SubData1.__bases__)
print(SubData1.__dict__)
print(SubData1.__doc__)
Output:
<class 'type'>
(<class 'object'>,)
{'__doc__': 'Data1 Class', 'd_id': 10, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'Data1' objects>, '__weakref__': <attribute '__weakref__' of 'Data1' objects>}
Data1 Class
<class 'type'>
(<class '__main__.Data1'>,)
{'__doc__': 'SubData1 Class', 'sd_id': 20, '__module__': '__main__'}
SubData1 Class
Merk op dat we geen functies kunnen maken in de dynamische klasse met behulp van de functie type().
Real-Life Gebruik van de type() Functie
Python is een dynamisch getypeerde taal. Dus, als we het type van de argumenten willen weten, kunnen we de type() functie gebruiken. Als je wilt controleren of je functie alleen werkt op specifieke typen objecten, gebruik dan de isinstance() functie.
Stel dat we een functie willen maken om iets te berekenen met twee integers. We kunnen het op de volgende manier implementeren.
def calculate(x, y, op='sum'):
if not(isinstance(x, int) and isinstance(y, int)):
print(f'Invalid Types of Arguments - x:{type(x)}, y:{type(y)}')
raise TypeError('Incompatible types of arguments, must be integers')
if op == 'difference':
return x - y
if op == 'multiply':
return x * y
# standaard is som
return x + y
De isinstance() functie wordt gebruikt om het type van het invoerargument te valideren. De type() functie wordt gebruikt om het type van de parameters af te drukken wanneer de validatie mislukt.
Referenties
Source:
https://www.digitalocean.com/community/tutorials/python-type