No creo que haya una gran necesidad de continuar votando, ¡solo estoy tratando de aprender aquí!
One.py
from two import *
ADooDah = Doodah()
something = Thing(ADooDah)
something.DoThis()
something.DoThat
something.DoAnother
if (something.has_done_stuff() == True)
self.SomeFunction
Two.py
class Thing(var):
def __init__(self, var)
self.SomeVar = var
def has_done_stuff(self):
while True:
id, newMessage = SomeVar.get_next_message()
if id == 0:
return true
else:
return false
Yo obtengo...
Traceback (most recent call last):
File "C:\One.py", line 9, in <module>
has_done_stuff = thing.HasDoneStuff()
NameError: global name 'thing' is not defined
EDICIONES: El código fue salpicado de errores. Estaba tratando de mostrar mi situación en lugar de cualquier código real. La escritura apresurada provoca una escritura tonta. ¡Incluso yo no soy tan malo! Bueno, la mayoría del tiempo ;) .
Espero que las ediciones hagan que todo tenga más sentido y ustedes, buenas personas, pueden dejar de enfocarse en los errores de sintaxis locos y explicar un poco más sobre mi problema de alcance (supongo). Soy bastante nuevo en Python / IronPython y las reglas sobre tipos implícitos y alcance ¡Todavía estoy en el proceso de aprendizaje!
Aunque he resuelto mi problema. Gracias. Resultó ser bastante poco relacionado con lo anterior.
3 respuestas
Doy los siguientes códigos.
No sé para qué serán utilizables ... pero PUEDEN correr.
.
two.py
from time import time
class Thing():
def __init__(self, var):
self.SomeVar = enumerate(var)
def HasDoneStuff(self):
while True:
id, newMessage = self.SomeVar.next()
print newMessage
print 'id==',id
return id == 0
def DoThis(self):
print "DoThis' result"
def DoThat(self):
print 'DoingThat ;;;;;;;;;;;;;;;;;;;;;'
def DoAnother(self):
print 'DoAnother time',time()
def SomeFunction(self):
print 'Humpty Dumpty sat on a wall'
.
one.py
from two import *
def Doodah(ss):
return ss.split()
ADooDah = Doodah('once upon a time')
Something = Thing(ADooDah)
Something.DoThis()
Something.DoThat()
Something.DoAnother()
print '\n==========================\n'
while True:
try:
if Something.HasDoneStuff():
Something.SomeFunction()
print '---------------'
except StopIteration:
print "That's all folks"
break
Hay algunos problemas:
Afirma que Thing
se define en Two.py
. Si es así, debe importarlo así:
from Two import Thing
O (no recomendado):
from Two import *
Luego, necesita class
, no Class
.
A continuación, debe definir thing
, que no ha hecho. Supongo que quieres que thing
sea un objeto Thing
:
thing = Thing(ADooDah)
Luego está el problema con el if
dentro HasDoneStuff
al que alguien se ha referido en un comentario, y el hecho de que Thing
está incompleto (también mencionado en otra respuesta).
Something = Thing(ADooDah)
thing.DoThis()
Su thing
se llama Something
. Además, su clase Thing
no tiene ninguno de los métodos a los que llama / no llama (parentes faltantes). Esto es prácticamente un código sin sentido.
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.