Python TypeError: 1 erforderliches Positionsargument fehlt

Manav Narula 21 Juni 2023
  1. Kein Instanziieren eines Objekts in Python
  2. Falsches Instanziieren eines Klassenobjekts in Python
  3. Beheben Sie den Fehler TypeError: missing 1 required positional argument: 'self' in Python
  4. Abschluss
Python TypeError: 1 erforderliches Positionsargument fehlt

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 Narula avatar Manav Narula avatar

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

Verwandter Artikel - Python TypeError

Verwandter Artikel - Python Error