Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
名称错误:全局名称';类对象';不是由PYTHON定义的_Python - Fatal编程技术网

名称错误:全局名称';类对象';不是由PYTHON定义的

名称错误:全局名称';类对象';不是由PYTHON定义的,python,Python,我有一个类master.py,带有Glade相关的Gui。我有一个按钮,上面有一个事件。 我只想用另一个类从另一个python文件调用另外两个方法,但NameError:未定义全局名称“Airmong” 错误被抛出 这些文件在同一个文件夹中! master.py文件包含: #!/usr/bin/python # -*- coding: utf-8 -*- from gi.repository import Gtk from airmong import Airmong class Handler

我有一个类
master.py
,带有Glade相关的Gui。我有一个按钮,上面有一个事件。 我只想用另一个类从另一个python文件调用另外两个方法,但NameError:未定义全局名称“Airmong” 错误被抛出

这些文件在同一个文件夹中! master.py文件包含:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from gi.repository import Gtk
from airmong import Airmong
class Handler:
    airmonObj=Airmong();
    def airmon_clicked(self, button):
        airmonObj.startAirmong()
builder = Gtk.Builder()
builder.add_from_file("master.glade")
builder.connect_signals(Handler())

window = builder.get_object("window1")
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()
#!/usr/bin/python
# -*- coding: utf-8 -*-
class Airmong:
    def __init__(self):
        pass
    def stopAirmong(self):
            result = subprocess.check_call(['airmon-ng','stop' ,'wlan0mon'])
            if result == 0:
                    print "Success stopping airmong"
            else:
                    print "CAN'T stop airmong"


    def startAirmong(self):
        result=subprocess.check_call(['airmon-ng','start','wlan0'])
        if result == 0:
                    print "Success starting airmong"
        else:
                    print "CAN'T start airmong"
airmong.py文件包含:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from gi.repository import Gtk
from airmong import Airmong
class Handler:
    airmonObj=Airmong();
    def airmon_clicked(self, button):
        airmonObj.startAirmong()
builder = Gtk.Builder()
builder.add_from_file("master.glade")
builder.connect_signals(Handler())

window = builder.get_object("window1")
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()
#!/usr/bin/python
# -*- coding: utf-8 -*-
class Airmong:
    def __init__(self):
        pass
    def stopAirmong(self):
            result = subprocess.check_call(['airmon-ng','stop' ,'wlan0mon'])
            if result == 0:
                    print "Success stopping airmong"
            else:
                    print "CAN'T stop airmong"


    def startAirmong(self):
        result=subprocess.check_call(['airmon-ng','start','wlan0'])
        if result == 0:
                    print "Success starting airmong"
        else:
                    print "CAN'T start airmong"
我做错了什么?非常感谢

错误:

Traceback (most recent call last):
File "./master.py", line 9, in airmon_clicked
airmonObj.startAirmong();
NameError: global name 'airmonObj' is not defined

代码中存在多个错误:

Master.py

1) 在
第4行中
将内容
从airmong.py导入airmong
更改为
从airmong导入airmong

2) 在
第8行中
缩进函数体。函数的示例代码如下所示

class Handler:
    airmonObj=Airmong();

    def airmon_clicked(self, button):
        airmonObj.startAirmong()
airmong.py

3) 删除
第3行中
关键字前的空格

4) 为init函数添加正文。示例如下所示。查看
关键字前没有空格

class Airmong:
    def __init__(self):
        pass

逐步修复所有语法错误。

来自
airmong.py
?尝试一下
airmong
。同样的错误,很抱歉您的文件是
airmong.py
还是
airmong.py
?尝试从Airmong导入
,Airmong
无效。文件是:airmong.py&master.py1)您是否尝试过从airmong导入airmong
-->在
master.py
中说这个,而不是从airmong.py导入airmong中说
;2) 另外,请尝试正确缩进您的
airmong.py
文件内容。检查编辑的帖子。我修复了所有错误(没有第3点…在实际代码中class关键字之前没有空格)。相同的结果修复了Airmong未定义的问题。。。现在未定义airmongObj的错误…是。这是你需要解决的另一个问题
airmonObj.startAirmong()
将其替换为
self.airmonObj.startAirmong()
。尝试通过@TrulyXax检查代码是否正常工作?用这个补丁。它必须起作用。