我认为不需要持续的低调,我只是想在这里学习!
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
我明白了......
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
编辑:代码确实充满了错误。我试图展示我的情况,而不是任何真正的代码。匆忙打字会导致愚蠢的打字。即便我也不是那么糟糕!好吧,大部分时间;)。
我希望这些编辑能让一切变得更有意义,而且你们可以停止关注疯狂的语法错误,并解释一下我的范围(我假设)问题。我是Python / IronPython的新手,关于隐式类型和范围的规则我还在学习中!
我已经解决了我的问题。谢谢。事实证明,这与上述情况完全无关。
答案 0 :(得分:3)
Something = Thing(ADooDah)
thing.DoThis()
您的thing
被称为Something
。
此外,您的班级Thing
没有您正在呼叫/不呼叫的方法(丢失的parens)。这几乎是无意义的代码。
答案 1 :(得分:2)
有一些问题:
您声明Thing
已在Two.py
中定义。如果是这样,您需要导入它:
from Two import Thing
或(不推荐):
from Two import *
接下来,您需要class
,而不是Class
。
接下来,您需要定义尚未完成的thing
。我会猜测你希望thing
成为Thing
对象:
thing = Thing(ADooDah)
然后在评论中有人在if
里面提到HasDoneStuff
的问题,以及Thing
不完整的事实(在另一个答案中也提到过)。< / p>
答案 2 :(得分:1)
我提供以下代码。
我不知道它们的用途......但它们可以运行。
<强> 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