Python TypeError: falta 1 argumento posicional requerido
- No instanciar un objeto en Python
- Instanciando incorrectamente un objeto de clase en Python
-
Solucione el error
TypeError: falta 1 argumento posicional requerido: 'self'
en Python - Conclusión
Las clases son una de las características fundamentales de los lenguajes de programación orientada a objetos. Cada objeto pertenece a alguna clase en Python.
Podemos crear nuestra clase como modelo para crear objetos del mismo tipo. Usamos la palabra clave clase
para definir una clase en Python.
Una característica muy importante en Python es usar el atributo self
al definir clases. El atributo self
representa los datos del objeto y vincula los argumentos al objeto.
Este tutorial discutirá el error TypeError: falta 1 argumento posicional requerido: 'self'
en Python y cómo podemos resolverlo.
Analicemos las situaciones en las que se produce este error.
No instanciar un objeto en Python
Los argumentos posicionales se refieren a los datos que proporcionamos a una función. Para crear objetos de clase, usamos un constructor.
Si la clase requiere datos, debemos pasarlos como argumentos en la función constructora.
Este error surge cuando olvidamos instanciar el objeto de la clase o instanciamos incorrectamente la instancia de la clase.
Vea el código a continuación.
class Delft:
def __init__(self, name):
self.name = name
def fun(self):
return self.name
m = Delft.fun()
print(m)
Producción :
TypeError: fun() missing 1 required positional argument: 'self'
En el ejemplo anterior, recibimos el error porque olvidamos instanciar la instancia de la clase e intentar acceder a la función de la clase. Como resultado, el atributo self
no está definido y no puede vincular los atributos al objeto.
Tenga en cuenta que se trata de un TypeError
, que se genera en Python al realizar alguna operación no admitida en un tipo de datos determinado. No se admite acceder directamente al método de clase sin crear una instancia.
Instanciando incorrectamente un objeto de clase en Python
Otro escenario donde puede ocurrir este error es cuando instanciamos incorrectamente el objeto de clase. Esto puede ser un pequeño error de tipeo como ignorar los paréntesis o no proporcionar los argumentos.
Por ejemplo:
class Delft:
def __init__(self, name):
self.name = name
def fun(self):
return self.name
m = Delft
a = m.fun()
print(a)
Producción :
TypeError: fun() missing 1 required positional argument: 'self'
Analicemos ahora cómo solucionar este error en la sección a continuación.
Solucione el error TypeError: falta 1 argumento posicional requerido: 'self'
en Python
Para corregir este error, podemos crear la instancia de la clase y usarla para acceder al método de la clase.
Vea el código a continuación.
class Delft:
def __init__(self, name):
self.name = name
def fun(self):
return self.name
m = Delft("Stack")
a = m.fun()
print(a)
Producción :
Stack
En el ejemplo, primero creamos una instancia de la clase. Esto luego se usa para acceder al método de clase para devolver algún valor e imprimirlo; el error esta arreglado
Otra solución implica el uso de métodos estáticos. Los métodos estáticos son funciones vinculadas a una clase en particular y no a un objeto.
Podemos usar el decorador @staticmethod
para crear dichos métodos.
Por ejemplo:
class Delft:
def __init__(self, name):
self.name = name
@staticmethod
def fun(abc):
return abc
a = Delft.fun("Stack")
print(a)
Producción :
Stack
En el ejemplo anterior, cambiamos la función fun()
a una función estática. De esta manera, podríamos usarlo sin instanciar ningún objeto de clase.
Conclusión
Este tutorial discutió el error TypeError: falta 1 argumento posicional requerido: 'self'
en Python y cómo podemos resolverlo.
Hablamos de situaciones en las que podría ocurrir este error y cómo corregirlo instanciando el objeto de la clase. También podemos usar métodos estáticos para evitar este error.
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.
LinkedInArtículo relacionado - Python TypeError
- Python TypeError: Unhashable Tipo: Lista
- Resuelva el TypeError: no todos los argumentos se convirtieron durante el formato de cadena en Python
- Resuelva el TypeError: se requiere un número entero en Python
- Solucione el error de tipo de Python: los índices de lista deben ser números enteros, no una lista
- TypeError: debe ser un número real, no STR
Artículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python