Saltar al contenido

Python NameError: el nombre no está definido

Puede darse el caso de que encuentres alguna incompatibilidad en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.

Solución:

Defina la clase antes de usarla:

class Something:
    def out(self):
        print("it works")

s = Something()
s.out()

tienes que pasar self como primer argumento para todos los métodos de instancia.

Tenga en cuenta que a veces querrá usar el nombre del tipo de clase dentro de su propia definición, por ejemplo, cuando use el módulo Python Typing, por ejemplo

class Tree:
    def __init__(self, left: Tree, right: Tree):
        self.left = left
        self.right = right

Esto también resultará en

NameError: name 'Tree' is not defined

Eso es porque la clase aún no se ha definido en este punto. La solución es usar la llamada referencia directa, es decir, envolver un nombre de clase en un stringes decir

class Tree:
    def __init__(self, left: 'Tree', right: 'Tree'):
        self.left = left
        self.right = right

Debe definir la clase antes de crear una instancia de la clase. Mueve la invocación de Something hasta el final del guión.

Puede intentar poner el carro delante del caballo e invocar los procedimientos antes de que se definan, pero será un truco feo y tendrá que rodar el suyo como se define aquí:

Haga que la definición de la función en un orden de archivo de python sea independiente

Recuerda que puedes comunicar este ensayo si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *