2

在 .py 文件中,我有以下内容:

class avgbox:
    def __init__(self,t,n,a):
        self.t = t
        self.n = n
        self.a = a
    def add(x):
        self.t += x
        self.n += 1
        self.a = t/n

现在,当我from file.py import *从 ubuntu 命令行运行交互式 python shell 时,它没有显示错误。然后a = avgbox(0,0,0)说什么时候做NameError: name 'avgbox' is not defined。有任何想法吗?我在这里做错了什么?谢谢!

4

2 回答 2

1

我将您的代码复制粘贴到一个名为“file.py”的文件中。然后我做了以下事情:

from file import *

avgbox(1, 2, 3)

有效。也许你的错误是你在from file.py import *应该做的时候做from file import *记住,当 Python 搜索模块名称时,.py如果它在当前目录中查找 Python 文件,它会自动附加到模块的名称。当然,您也可以使用from语法在包中搜索,但这是另一回事。

于 2013-09-12T18:40:28.333 回答
0

您必须确保该文件与您的 python 解释器位于同一目录中。您还必须删除.py中的 ,from file.py import *因为.py表示包中的不同模块,例如import os.path. 如果该文件与 python shell不在同一目录中,则必须确保 python 能够在您的PATH变量中找到它。

还值得注意的是,您通常不应该执行 a from file import *,因为这会污染您将其导入到的命名空间,因为它会将其作为function_names而不是module.function_names. 您可以这样做from file import function1,function2,...,这只会将这些函数导入当前命名空间,而不会导入其他函数。

另外,请确保在类self中将其作为类中每个函数的第一个参数,否则会引发语法错误。

于 2013-09-12T18:42:11.410 回答