Python-isinstance()-Funktion

Python3 内置函数Python3 integrierte Funktionen


isinstance()Es ist eine in Python integrierte Funktion, die prüft, ob ein Objekt eine Instanz des angegebenen Typs (oder eines beliebigen Typs in einem Tupel von Typen) ist.

isinstance()Es ist die am häufigsten verwendete Funktion zur Typprüfung in Python. Sie prüft nicht nur den exakten Typ, sondern berücksichtigt auch Vererbungsbeziehungen (Unterklassen sind ebenfalls Instanzen ihrer Elternklasse).

Begriffsdefinition: isinstance 是 is an instance(是一个实例)的缩写。


Grundlegende Syntax und Parameter

Syntax

isinstance(object, classinfo)

Parameterbeschreibung

  • Parameter object:
    • Typ: Beliebiges Objekt
    • Beschreibung: Das zu prüfende Objekt.
  • Parameter classinfo:
    • Typ: Ein Typ, ein Tupel von Typen oder eine abstrakte Basisklasse
    • Beschreibung: Der Typ, gegen den geprüft wird. Kann ein einzelner Typ oder ein Tupel von Typen sein.

Funktionsbeschreibung

  • Rückgabewert: Gibt einen booleschen Wert zurückTrueoderFalse。
  • Merkmal: Gibt True zurück, wenn object eine Instanz einer Unterklasse von classinfo ist.

Beispiele

Beispiel 1: Grundlegende Verwendung

Beispiel

# Grundlegende Typen prüfen
print(isinstance(123, int))           # Ausgabe: True
print(isinstance(3.14, float))        # Ausgabe: True
print(isinstance("hello", str))       # Ausgabe: True
print(isinstance([1, 2], list))       # Ausgabe: True
print(isinstance({"a": 1}, dict))     # Ausgabe: True

# None prüfen
print(isinstance(None, type(None)))   # Ausgabe: True

# Boolesche Werte prüfen (Hinweis: bool ist eine Unterklasse von int)
print(isinstance(True, bool))         # Ausgabe: True
print(isinstance(True, int))          # Ausgabe: True (weil bool von int erbt)

Erwartete Ausgabe:

True
True
True
True
True
True
True
True

Codeanalyse:

  1. Es kann verschiedene grundlegende Typen prüfen.
  2. bool ist eine Unterklasse von int, daher sind True/False ebenfalls Instanzen von int.

Beispiel 2: Verwenden eines Tupels von Typen

Beispiel

# Mehrere Typen prüfen (mit einem Tupel)
value = 42

print(isinstance(value, (int, float)))    # Ausgabe: True
print(isinstance(value, (str, list)))     # Ausgabe: False

# Mischung aus mehreren Typen prüfen
value = "hello"
print(isinstance(value, (int, str, bytes))) # Ausgabe: True

# Wird in bedingten Anweisungen verwendet
def process_data(data):
    if isinstance(data, (list, tuple)):
        return sum(data)
    elif isinstance(data, (int, float)):
        return data * 2
    else:
        return str(data)

print(process_data([1, 2, 3]))     # Ausgabe: 6
print(process_data((1, 2, 3)))    # Ausgabe: 6
print(process_data(10))           # Ausgabe: 20
print(process_data(3.14))         # Ausgabe: 6.28
print(process_data("hello"))      # Ausgabe: hello

Erwartete Ausgabe:

True
False
True
6
6
20
6.28
hello

Codeanalyse:

  • Der zweite Parameter kann ein Tupel von Typen sein, wodurch mehrere Typen gleichzeitig geprüft werden können.
  • Das ist sehr praktisch, wenn man mit mehreren Datentypen arbeitet.

Beispiel 3: Mit Klassenvererbung

Beispiel

# Beispiel für Klassenvererbung
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

# Eine Instanz erstellen
dog = Dog()
cat = Cat()
animal = Animal()

# isinstance berücksichtigt die Vererbung
print(isinstance(dog, Dog))      # Ausgabe: True
print(isinstance(dog, Animal))   # Ausgabe: True (eine Instanz einer Unterklasse ist auch eine Instanz der Elternklasse)
print(isinstance(dog, Cat))      # Ausgabe: False

print(isinstance(cat, Animal))   # Ausgabe: True
print(isinstance(animal, Dog))   # Ausgabe: False

Erwartete Ausgabe:

True
True
False
True
False

isinstance()Es prüft die Vererbungskette, sodass Unterklasseninstanzen auch Instanzen der Elternklasse sind.


Python3 内置函数Python3 integrierte Funktionen


Andere Erweiterungen