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.