Python-isinstance()-Funktion
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ück
TrueoderFalse。 - 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)
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:
- Es kann verschiedene grundlegende Typen prüfen.
- 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
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
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 integrierte Funktionen
Andere Erweiterungen