从另一个文件中的类导入函数?

76 投票
6 回答
334124 浏览
提问于 2025-04-16 21:53

我正在写一个Python程序,纯粹是为了好玩,但在尝试从另一个文件中的类里导入一个函数时遇到了困难。以下是我的代码:

#jurassic park mainframe

from random import randint
from sys import exit
from comm_system import Comm_system #the file i want to import from



class Jpark_mainframe(object):
    def mainframe_home(self):
        print "=====Welcome to the Jurassic Park Mainframe====="
        print "==========Security Administration==============="
        print "===========Communications Systems==============="
        print "===============System Settings=================="
        print "===================Quit========================="

        prompt = raw_input("What would you like to do? ")

        while prompt != "Quit":

            if prompt == "Security Administration":
                print "Please enter the 5-digit passcode:"
                security_passcode = "%d%d%d%d%d" % (2, 0, 1, 2, randint(1, 2))
                security_guess = raw_input(": ")
                security_guesses = 0

                while security_guess != security_passcode and security_guesses < 7:
                    print "Incorrect. Please enter the security passcode."
                    security_guesses += 1
                    security_guess = raw_input(": ")

                    if security_guess == security_passcode:
                        print "=========Security Administration======="
                        print "Area 1 Fences: Off"
                        print "Area 2 Fences: On"
                        print "Area 3 Fences: Off"
                        print "Velociraptor Compound: Off"
                        print "Lobby Security System: Off"
                        print "Entrance Facility System: Off"
                        print "To enable all systems, enter 'On'"


                        enable_security = raw_input(": ")

                        if enable_security == "On":
                            print "Systems Online."


            if prompt == "System Settings":
                print "You do not have access to system settings."
                exit(0)


            if prompt == "Communications Systems":
                print "===========Communications Systems==========="
                print "error: 'comm_link' missing in directories"
                exit(0)
            return Comm_system.run #this is where I want to return the 
                                                   #the other file

the_game = jpark_mainframe()
the_game.mainframe_home()

我想从另一个文件中的一个类里返回一个叫做 run() 的函数。当我导入这个文件时,它首先运行了包含 run() 的类,然后才继续执行原来的代码。这是为什么呢?

这是来自comm_system的代码:

#communication systems


from sys import exit

class Comm_system(object):
def run(self):

    comm_directory = ["net_link", "tsfa_run", "j_link"]
    print "When the system rebooted, some files necessary for"
    print "communicating with the mainland got lost in the directory."
    print "The files were poorly labeled as a result of sloppy"
    print "programming on the staff's part. You must locate the"
    print "the file and contact the rescue team before the dinosaurs"
    print "surround the visitor's center. You were also notified the"
    print "generators were shorting out, and the mainframe will lose"
    print "power at any moment. Which directory will you search in?"
    print "you don't have much time! Option 1: cd /comm_sys/file"
    print "Option 2: cd /comm_sys/dis"
    print "Option 3: cd /comm_sys/comm"

    dir_choice = raw_input("jpark_edwin$ ")

    if dir_choice == "/comm_sys/file" or dir_choice == "/comm_sys/dis":
        print "misc.txt" 
        print "You couldn't locate the file!"
        print "The system lost power and your computer shut down on you!"
        print "You will not be able to reach the mainland until the system"
        print "comes back online, and it will be too late by then."
        return 'death'

    if dir_choice == "/comm_sys/comm":
        comm_directory.append("comm_link")
        print comm_directory
        print "You found the right file and activated it!"
        print "Just in time too, because the computers shut down on you."
        print "The phonelines are radios are still online."
        print "You and the other survivors quickly call the mainlane"
        print "and help is on the way. You all run to the roof and wait"
        print "until the helocopter picks you up. You win!"
a_game = Comm_system()
a_game.run()

6 个回答

4

首先,你需要确认你的两个文件是在同一个工作目录下。接下来,你可以导入整个文件。例如,

import myClass

或者你也可以从这个文件中导入整个类和所有函数。例如,

from myClass import

最后,你需要创建一个原始文件中类的实例,然后调用这个实例对象。

13
from FOLDER_NAME import FILENAME
from FILENAME import CLASS_NAME FUNCTION_NAME

FILENAME 是没有后缀的文件名

117
from otherfile import TheClass
theclass = TheClass()
# if you want to return the output of run
return theclass.run()  
# if you want to return run itself to be used later
return theclass.run

把通信系统的结尾改成:

if __name__ == '__main__':
    a_game = Comm_system()
    a_game.run()

是那些总是被执行的代码行,导致它在被导入和直接运行时都会执行。

撰写回答