我刚开始使用Python,我有一个关于空闲与终端的问题。
在空闲时,我创建了一个名为Robot.py的文件
我有一个名为Robot的课程
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
我不确定如何在终端中运行我的程序。
此外:
如何在外部文件(例如testrobot.py)中调用Robots.py中的HelloWorld()
函数而不调用Robot类?
提前致谢!
答案 0 :(得分:2)
在IDLE中加载和运行脚本时,会自动为解释器加载它们。这意味着只要您在IDLE中运行脚本,Python shell就已经定义了这些类型。
如果要从IDLE外部运行它,即不先运行模块,则需要从该模块导入Robot。为此,您导入模块,而不是类型:
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()
正如您所看到的,将文件命名为小写通常是个好主意,因为它们是模块名称(或其他语言中的“名称空间”)。
答案 1 :(得分:1)
您正在尝试创建导入类,而不是导入的类。
您正尝试使用该导入语句导入名为Robot.py
的文件。要导入机器人类,您必须键入import Robot
,然后编写Robot.Robot(1,4)
以创建它的对象。或者,您可以从文件中导入所有引用:from Robot import *
,然后编写Robot(1,4)
。
它与IDLE一起使用的原因是它基本上从您运行的文件中导入所有内容,允许您使用该文件中的方法和类。