Object Has No Attribute Fehler behoben in Python
Attribute sind Funktionen oder Eigenschaften, die einem Objekt einer Klasse zugeordnet sind. Alles in Python ist ein Objekt, und alle diese Objekte haben eine Klasse mit einigen Attributen. Wir können auf solche Eigenschaften mit dem .
zugreifen. Operator.
In diesem Tutorial wird der Fehler Objekt hat kein Python-Attribut
in Python behandelt. Dieser Fehler gehört zum Typ AttributeError
.
Dieser Fehler tritt auf, wenn wir versuchen, auf das nicht verfügbare Attribut eines Objekts zuzugreifen. Beispielsweise haben die NumPy
-Arrays in Python ein Attribut namens size
, das die Größe des Arrays zurückgibt. Dies ist jedoch bei Listen nicht vorhanden. Wenn wir dieses Attribut also mit einer Liste verwenden, erhalten wir diesen AttributeError
.
Siehe Code unten.
import numpy as np
arr1 = np.array([8, 4, 3])
lst = [8, 4, 3]
print(arr1.size)
print(lst.size)
Ausgabe:
3
AttributeError: 'list' object has no attribute 'size'
Der obige Code gibt die size
des NumPy
-Arrays zurück, funktioniert aber nicht mit Listen und gibt den AttributeError
zurück.
Hier ist ein weiteres Beispiel mit benutzerdefinierten Klassen.
class A:
def show():
print("Class A attribute only")
class B:
def disp():
print("Class B attribute only")
a = A()
b = B()
b.show()
Ausgabe:
AttributeError: 'B' object has no attribute 'show'
Im obigen Beispiel wurden zwei Klassen mit ähnlichen Funktionen zum Anzeigen von Nachrichten initiiert. Der Fehler wird angezeigt, weil die aufgerufene Funktion nicht der Klasse B
zugeordnet ist.
Wir können diesen Fehler auf verschiedene Weise angehen. Mit der Funktion dir()
können alle zugehörigen Attribute eines Objekts eingesehen werden. Diese Methode kann jedoch über eine Metaklasse geerbte Attribute übersehen.
Wir können unser Objekt auch auf den Typ aktualisieren, der das erforderliche Attribut unterstützt. Dies ist jedoch keine gute Methode und kann zu anderen unerwünschten Fehlern führen.
Wir können auch die Funktion hasattr()
verwenden. Diese Funktion gibt True zurück, wenn ein Attribut zu dem angegebenen Objekt gehört. Andernfalls wird False zurückgegeben.
Siehe Code unten.
class A:
def show():
print("Class A attribute only")
class B:
def disp():
print("Class B attribute only")
a = A()
b = B()
lst = [5, 6, 3]
print(hasattr(b, "disp"))
print(hasattr(lst, "size"))
Ausgabe:
True
False
Im obigen Beispiel hat das Objekt b
das Attribut disp
, also gibt die Funktion hasattr()
True zurück. Die Liste hat kein Attribut size
, also gibt sie False zurück.
Wenn wir möchten, dass ein Attribut einen Standardwert zurückgibt, können wir die Funktion setattr()
verwenden. Diese Funktion wird verwendet, um fehlende Attribute mit dem angegebenen Wert zu erstellen.
Siehe dieses Beispiel.
class B:
def disp():
print("Class B attribute only")
b = B()
setattr(b, "show", 58)
print(b.show)
Ausgabe:
58
Der obige Code fügt ein Attribut namens show
mit dem Objekt b
mit einem Wert von 58
hinzu.
Wir können auch einen Code haben, bei dem wir uns über die zugehörigen Attribute in einem try
- und except
-Block nicht sicher sind, um Fehler zu vermeiden.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn