Wir verwenden die Funktion type() in Python, um den Typ eines bestimmten Python-Objekts zu identifizieren. Es ist eine sehr unkomplizierte Funktion und eine, die leicht zu verstehen ist. Ohne weitere Umwege kommen wir direkt zur Syntax.
Syntax der Python type() Funktion
Python hat viele eingebaute Funktionen. Die type()
Funktion wird verwendet, um den Typ eines Objekts zu ermitteln.
Die Syntax der Python type() Funktion lautet:
type(object)
type(name, bases, dict)
Wenn ein einzelnes Argument an die Funktion type() übergeben wird, gibt sie den Typ des Objekts zurück. Sein Wert ist derselbe wie die Instanzvariable object.__class__.
Wenn drei Argumente übergeben werden, gibt sie ein neues Typobjekt zurück. Es wird verwendet, um dynamisch eine Klasse zu erstellen.
- Der String “name” wird zum Klassennamen. Es ist das Gleiche wie das __name__ Attribut einer Klasse.
- Das Tupel “bases” spezifiziert die Basisklassen. Es ist das Gleiche wie das __bases__ Attribut der Klasse.
- Das Wörterbuch “dict” hilft beim Erstellen des Klassenkörpers. Es ist das Gleiche wie das __dict__ Attribut der Klasse.
Beispiele für die Funktion type() in Python
Werfen wir einen Blick auf einige Beispiele zur Verwendung der Funktion type().
1. Ermitteln des Typs eines Python-Objekts
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))
Ausgabe:
<class 'int'>
<class 'str'>
<class 'collections.OrderedDict'>
<class '__main__.Data'>
Beachten Sie, dass die Funktion type() den Typ des Objekts mit dem Modulnamen zurückgibt. Da unser Python-Skript kein Modul hat, wird sein Modul zu __main__.
2. Extrahieren von Details aus Python-Klassen
Angenommen, wir haben folgende Klassen. Wir werden Metadaten über die Klassen mithilfe der Eigenschaften class, bases, dict und doc abrufen.
class Data:
"""Data Class"""
d_id = 10
class SubData(Data):
"""SubData Class"""
sd_id = 20
Lassen Sie uns einige der Eigenschaften dieser Klassen ausdrucken.
print(Data.__class__)
print(Data.__bases__)
print(Data.__dict__)
print(Data.__doc__)
print(SubData.__class__)
print(SubData.__bases__)
print(SubData.__dict__)
print(SubData.__doc__)
Ausgabe:
<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
Wir können ähnliche Klassen mithilfe der Funktion type() erstellen.
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__)
Ausgabe:
<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
Beachten Sie, dass wir mit der Funktion type() keine Funktionen in der dynamischen Klasse erstellen können.
Die Verwendung der Funktion type() im realen Leben
Python ist eine dynamisch typisierte Sprache. Wenn wir also den Typ der Argumente wissen möchten, können wir die Funktion type() verwenden. Wenn Sie sicherstellen möchten, dass Ihre Funktion nur auf bestimmten Objekttypen funktioniert, verwenden Sie die Funktion isinstance().
Angenommen, wir möchten eine Funktion erstellen, um etwas mit zwei ganzen Zahlen zu berechnen. Wir können sie folgendermaßen implementieren.
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
# Standard ist Summe
return x + y
Die isinstance()-Funktion wird verwendet, um den Eingabetyp des Arguments zu validieren. Die Funktion type() wird verwendet, um den Typ der Parameter auszugeben, wenn die Validierung fehlschlägt.
Referenzen
Source:
https://www.digitalocean.com/community/tutorials/python-type