Website-Suche

Python type() Funktion [Mit einfachen Beispielen]


Wir verwenden die Funktion type() in Python, um den Typ eines bestimmten Python-Objekts zu identifizieren. Es ist eine sehr einfache Funktion und auch leicht verständlich. Ohne weitere Umschweife, lassen Sie uns direkt zur Syntax übergehen.

Syntax der Python type() Funktion

Python hat viele eingebaute Funktionen. Die type()-Funktion wird verwendet, um den Typ eines Objekts zu erhalten.

Die Syntax der Python type() Funktion ist:

type(object)

type(name, bases, dict)

Wenn ein einzelnes Argument an die Funktion type() übergeben wird, gibt sie den Typ des Objekts zurück. Der Wert entspricht der Instanzvariable object.__class__.

Wenn drei Argumente übergeben werden, gibt es ein neues Typ-Objekt zurück. Es wird verwendet, um eine Klasse dynamisch und zur Laufzeit zu erstellen.

  • Der “name ” String wird zum Klassennamen. Es ist dasselbe wie das __name__ Attribut einer Klasse.
  • “bases ” Tupel spezifiziert die Basisklassen. Es ist dasselbe wie das __bases__ Attribut der Klasse.
  • “dict ” Wörterbuch hilft, den Klassenrumpf zu erstellen. Es ist dasselbe wie das __dict__ Attribut der Klasse.

Beispiele für die type()-Funktion in Python

Lass uns einige Beispiele für die Verwendung der Funktion type() ansehen.

1. Den Typ eines Python-Objekts finden

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. Einzelheiten aus Python-Klassen extrahieren

Sagen wir, 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

Lass 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 mit 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 in der dynamischen Klasse keine Funktionen mit der type()-Funktion erstellen können.

Reale Verwendung der Funktion type()

Python ist eine dynamisch typisierte Sprache. Wenn wir also den Typ der Argumente wissen wollen, können wir die Funktion type() verwenden. Wenn du sicherstellen möchtest, dass deine Funktion nur mit bestimmten Typen von Objekten arbeitet, verwende die Funktion isinstance().

Sagen wir, wir möchten eine Funktion erstellen, um etwas mit zwei Ganzzahlen zu berechnen. Wir können sie auf folgende Weise 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
    # default is sum
    return x + y

Die isinstance() Funktion wird verwendet, um den Typ des Eingabearguments zu validieren. Die type() Funktion wird verwendet, um den Typ der Parameter auszugeben, wenn die Validierung fehlschlägt.

Referenzen

  • type() API Dokumentation
  • Python isinstance() Funktion
  • Python Typüberprüfung