Python TypeError: 1 erforderliches Positionsargument fehlt
- Kein Instanziieren eines Objekts in Python
- Falsches Instanziieren eines Klassenobjekts in Python
-
Beheben Sie den Fehler
TypeError: missing 1 required positional argument: 'self'
in Python - Abschluss
Klassen sind eines der grundlegenden Merkmale objektorientierter Programmiersprachen. Jedes Objekt gehört zu einer Klasse in Python.
Wir können unsere Klasse als Blaupause erstellen, um Objekte desselben Typs zu erstellen. Wir verwenden das Schlüsselwort class
, um eine Klasse in Python zu definieren.
Ein sehr wichtiges Feature in Python ist die Verwendung des self
-Attributs beim Definieren von Klassen. Das Attribut self
repräsentiert die Daten des Objekts und bindet die Argumente an das Objekt.
Dieses Tutorial behandelt den Fehler TypeError: missing 1 required positional argument: 'self'
in Python und wie wir ihn lösen können.
Lassen Sie uns die Situationen besprechen, in denen dieser Fehler ausgelöst wird.
Kein Instanziieren eines Objekts in Python
Positionsargumente beziehen sich auf die Daten, die wir einer Funktion zur Verfügung stellen. Zum Erstellen von Klassenobjekten verwenden wir einen Konstruktor.
Wenn die Klasse Daten benötigt, müssen wir sie als Argumente in der Konstruktorfunktion übergeben.
Dieser Fehler wird ausgelöst, wenn wir vergessen, das Klassenobjekt zu instanziieren oder die Klasseninstanz fälschlicherweise instanziieren.
Siehe Code unten.
class Delft:
def __init__(self, name):
self.name = name
def fun(self):
return self.name
m = Delft.fun()
print(m)
Ausgang:
TypeError: fun() missing 1 required positional argument: 'self'
Im obigen Beispiel erhalten wir den Fehler, weil wir vergessen haben, die Instanz der Klasse zu instanziieren und versuchen, auf die Funktion der Klasse zuzugreifen. Dadurch ist das Attribut self
nicht definiert und kann die Attribute nicht an das Objekt binden.
Beachten Sie, dass dies ein TypeError
ist, der in Python ausgelöst wird, während eine nicht unterstützte Operation für einen bestimmten Datentyp ausgeführt wird. Es wird nicht unterstützt, direkt auf die Klassenmethode zuzugreifen, ohne eine Instanz zu erstellen.
Falsches Instanziieren eines Klassenobjekts in Python
Ein weiteres Szenario, in dem dieser Fehler auftreten kann, ist, wenn wir das Klassenobjekt falsch instanziieren. Dies kann ein kleiner Tippfehler sein, wie das Ignorieren der Klammern oder das Fehlen der Argumente.
Zum Beispiel:
class Delft:
def __init__(self, name):
self.name = name
def fun(self):
return self.name
m = Delft
a = m.fun()
print(a)
Ausgang:
TypeError: fun() missing 1 required positional argument: 'self'
Lassen Sie uns nun im folgenden Abschnitt besprechen, wie Sie diesen Fehler beheben können.
Beheben Sie den Fehler TypeError: missing 1 required positional argument: 'self'
in Python
Um diesen Fehler zu beheben, können wir die Klasseninstanz erstellen und damit auf die Klassenmethode zugreifen.
Siehe Code unten.
class Delft:
def __init__(self, name):
self.name = name
def fun(self):
return self.name
m = Delft("Stack")
a = m.fun()
print(a)
Ausgang:
Stack
Im Beispiel erstellen wir zunächst eine Instanz der Klasse. Dies wird dann verwendet, um auf die Klassenmethode zuzugreifen, um einen Wert zurückzugeben und ihn auszugeben; der Fehler ist behoben.
Eine weitere Lösung betrifft die Verwendung statischer Methoden. Statische Methoden sind Funktionen, die an eine bestimmte Klasse und nicht an ein Objekt gebunden sind.
Wir können den Decorator @staticmethod
verwenden, um solche Methoden zu erstellen.
Zum Beispiel:
class Delft:
def __init__(self, name):
self.name = name
@staticmethod
def fun(abc):
return abc
a = Delft.fun("Stack")
print(a)
Ausgang:
Stack
Im obigen Beispiel haben wir die Funktion fun()
in eine statische Funktion geändert. Auf diese Weise könnten wir es verwenden, ohne Klassenobjekte zu instanziieren.
Abschluss
In diesem Tutorial wurde der Fehler TypeError: missing 1 required positional argument: 'self'
in Python besprochen und wie wir ihn lösen können.
Wir haben Situationen besprochen, in denen dieser Fehler auftreten könnte, und wie der Fehler behoben werden kann, indem das Objekt der Klasse instanziiert wird. Wir können auch statische Methoden verwenden, um diesen Fehler zu umgehen.
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.
LinkedInVerwandter Artikel - Python TypeError
- Beheben Sie den Python TypeError: List Indices Must Be Integers, Not List
- Beheben Sie den TypeError: Not All Arguments Converted While String Formatting in Python
- Lösen Sie den TypeError: In Python ist eine ganze Zahl erforderlich
- Python TypeError: Nicht hashbarer Typ: Liste
- TypeError: Iteration über Non-Sequence
Verwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung