我刚开始使用 Python,我有一个关于空闲与终端的问题。
闲着的时候,我做了一个叫Robot.py的文件
我有一个类叫做机器人
class Robot(object)
def __init__(self,x,y):
#some code here etc...
def HelloWorld()
print "Hello World!"
我有另一个名为 testrobot.py 的文件,它看起来像这样:
import Robot
r = Robot(1,4)
在空闲状态下,当我运行 testrobot.py 时,我能够成功地创建一个 Robot 对象。但是在终端中,它会给出错误消息 NameError: Robot is not defined
我不确定如何在终端中运行我的程序。
还有:
如何调用位于 Robots.py 中但不属于外部文件(例如 testrobot.py)中 Robot 类的 HelloWorld()
函数?
提前致谢!
最佳答案
当您在 IDLE 中加载和运行脚本时,它们会自动加载给解释器。这意味着只要您在 IDLE 中运行脚本,Python shell 就已经定义了这些类型。
当你想从 IDLE 之外运行它时,即不先运行模块,你需要从该模块导入你的机器人。为此,您导入模块,而不是类型:
import Robot
myRobot = Robot.Robot(...)
或者,如果你想直接使用Robot
,你需要使用from ... import
语法:
from Robot import Robot
myRobot = Robot(...)
同样,您可以在第一种情况下使用 Robot.HelloWorld
调用您的函数,或者在第二种情况下直接将 HelloWorld
添加到导入列表:
from Robot import Robot, HelloWorld
myRobot = Robot(...)
HelloWorld()
如您所见,以小写字母命名文件通常是个好主意,因为它们是模块名称(或其他语言中的“命名空间”)。
关于Python 空闲和终端导入差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13542530/