not name example español error python nameerror

python - example - NameError: name ''self'' no está definido



valueerror python (3)

Por qué tal estructura

class A: def __init__(self, a): self.a = a def p(self, b=self.a): print b

da un error NameError: name ''self'' is not defined ?


Los valores de argumento predeterminados se evalúan en la función define-time, pero self es un argumento disponible solo en el tiempo de llamada a la función. Por lo tanto, los argumentos en la lista de argumentos no pueden referirse entre sí.

Es un patrón común para predeterminar un argumento a None y agregar una prueba para eso en el código:

def p(self, b=None): if b is None: b = self.a print b


Para los casos en los que también desee tener la opción de establecer ''b'' en Ninguno:

def p(self, **kwargs): b = kwargs.get(''b'', self.a) print b


Si ha llegado aquí a través de google, asegúrese de verificar que se haya entregado como el primer parámetro de una función de clase. Especialmente si intenta hacer referencia a valores para ese objeto dentro de la función.

def foo(): print(self.bar)

> NameError: name ''self'' no está definido

def foo(self): print(self.bar)

> "Felicidades, se deshizo de NameError!"