簡體   English   中英

為什么“從文件導入類工作”而不是“導入文件”工作?

[英]Why does “from file import class work”, and not “import file”?

我在一個文件中制作了一個類,如下所示:

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”,而不是“從robot_sample_class導入Robot”

它不起作用,並顯示一條錯誤消息,例如:

my_robot =機器人(“游牧”,“自主漫游者”,“黑色”,“ JAY”)NameError:未定義名稱“機器人”

為什么會這樣呢? 我以為導入整個文件將允許我訪問該文件中的所有內容?

import robot_sample_class

意味着您需要編寫:

robot_sample_class.Robot(...)

如果要將所有內容導入全局名稱空間,請使用:

from robot_sample_class import *

盡管不建議將代碼持久化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM