我在课堂上调用变量时遇到问题。我把所有东西都设置为自我,但我仍然遇到错误。我想我很难解决这个问题,因为我是3.0脚本的新手。
这是我的剧本:
这是错误:
command = 'tcpdump -c5 -tttt -w {0} host {1}'.format(raw, input_host)
NameError: global name 'raw' is not defined
如果我将它们设为self.raw或self.input_host
它得到了这个:
command = 'tcpdump -c5 -tttt -w {0} host {1}'.format(self.raw, self.input_host)
AttributeError: 'MainLoop' object has no attribute 'raw'
答案 0 :(得分:4)
command = 'tcpdump -c5 -tttt -w {0} host {1}'.format(raw, input_host)
应该是:
command = 'tcpdump -c5 -tttt -w {0} host {1}'.format(self.raw, self.input_host)
注意self
。
答案 1 :(得分:1)
试
command = 'tcpdump -c5 -tttt -w {0} host {1}'.format(self.raw, self.input_host)
除非你将raw和input_host作为函数参数传递,否则你需要使用self.variable来查找类实例的变量。
编辑:您还需要确保在运行此代码行之前调用self.raw和self.input_host的任何函数。在您的代码中,如果您致电MainLoop.cmd()
,则必须在 MainLoop.host()
之前致电MainLoop.inputname()
和cmd()
,以便self.raw
和{{ 1}}存在于类的实例中。
在这种情况下,您应该为您的类创建一个至少创建实例变量
的构造函数self.input_host
然后在创建命令之前检查self.raw和self.input_host的值。
class MainLoop:
def __init__(self):
self.raw = None
self.input_host = None