我在一个文件中创建了一个类,它看起来如下:
class Robot():
def __init__(self, name, desc, color, owner):
# initializes our robot
self.name = name
self.desc = desc
self.color = color
self.owner = owner
def drive_forward(self):
#simulates driving forward
print(self.name.title() + " is driving" + " forward " + str(self.duration)+ " milliseconds")
def drive_backwards(self):
print(self.name.title() + " is driving" + " backwards " + str(self.duration) + " milliseconds")
def turn_left(self):
print(self.name.title() + " is turning " + " left " + str(self.duration) + " milliseconds")
def turn_right(self):
print(self.name.title() + " is turning " + " right " + str(self.duration) + " milliseconds")
我试图将此文件导入另一个文件,所以我可以 实例化它,看看OOP是如何运作的。
我试图导入类和实例化的另一个文件如下所示:
from robot_sample_class import Robot
my_robot = Robot("Nomad", "Autonomous rover", "Black", "JAY")
print("My robot is a " + my_robot.desc + " called " + my_robot.name)
my_robot.drive_forward()
my_robot.drive_backwards()
my_robot.turn_left()
my_robot.turn_right()
此代码适用于Python Shell;但是,如果我只是写
单独导入“robot_sample_class”而不是“from robot_sample_class import Robot”
它不起作用,它会发出错误消息,例如:
my_robot = Robot(“Nomad”,“Autonomous rover”,“Black”,“JAY”) NameError:名称'Robot'未定义
为什么会这样?我认为导入整个文件将允许我 访问该文件中的所有内容?
答案 0 :(得分:2)
import robot_sample_class
意味着你需要写:
robot_sample_class.Robot(...)
如果要将所有内容导入全局命名空间,请使用:
from robot_sample_class import *
虽然不建议将其用于持续使用的代码。