gpt4 book ai didi

Python NameError 麻烦

转载 作者:行者123 更新时间:2023-12-01 06:08:22 27 4
gpt4 key购买 nike

我有一些编程经验,但我对 python 很陌生,我正在尝试弄清楚如何使用和导入 .py 文件中的类而不是 main 。我目前正在使用 netbeans,运行 CPython 3.2.1。

根据我现在的设置,我的所有 .py 文件都位于同一文件夹中。忽略实际内容是什么,它看起来像这样:

python程序.py

from otherfile import *
obj = classB()
print(obj.run())

def method1():
dostuff

其他文件.py

import pythonprogram

class classA:
def __init__(self, thing1=None, thing2=None):
self.thing1 = thing1
self.thing2 = thing2
def run():
pythonprogram.method1()
return something

class classB(classA):
def __init__(self):
super(thing1=None, thing2=None) #this will be more meaningful later
def run():
do some stuff
return super().run()

到达创建 obj 的行后,我收到以下错误:

Traceback (more recent call last):
C:\users\me\projects\pythonprogram.py in line 4 in <module>
from room import *
C:\users\me\projects\otherfile.py in line 4 in <module>
import pythonprogram
C:\users\me\projects\pythonprogram.py in line 13 in <module>
obj = classB()

由于不熟悉 python,有人可能想让我知道我对 super 的使用是否正确,现在我开始想到这一点,但这不是重点(而且它肯定不是我正在处理的错误,对吧)现在)。

我很难找到与我遇到的错误直接相关的教程或另一个问题,但这可能只是因为我对 python 非常不熟悉,以至于当我看到它时我忽略了它;因此,如果有人想给我指出正确的教程,那也很好。

否则,我只是想知道我在如何设置一切方面做错了什么,以及我应该如何纠正它。

如果有帮助的话,我首先学习了 Java,并且也可以使用 C# 和 C++。

最佳答案

您的问题是由循环导入引起的。由于事物定义的顺序方式,Python 在这方面不如其他一些语言灵活。在您的情况下,pythonprogram 需要 otherfile 中的 classB 才能定义 method1 。但是 otherfile 需要 method1 才能定义 classB!

有时,您可以通过将 import 行进一步移至模块下方来解决循环导入问题。但解决这个问题的最好方法是完全避免模块之间的双向依赖。它通常会产生更清晰、设计更好的程序。

关于Python NameError 麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com