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

2024-04-18 12:50:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我写一个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()的类,然后继续运行原始代码。为什么会这样?

这是通信系统的代码:

#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()

Tags: andthetorunfromyouifsys
3条回答
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()

总是运行的那些行导致它在导入和执行时运行。

如果像我一样,你想做一个功能包或者其他可以下载的东西,那就很简单了。只需在python文件中编写函数并将其保存为python目录中所需的名称。现在,在要使用此脚本的脚本中,键入:

from FILE NAME import FUNCTION NAME

注意-以大写字母表示的部分是您键入文件名和函数名的位置。

现在你只要使用你的函数,不管它是什么样子。

示例:

函数脚本-保存在C:\ Python27中作为FUNCTION_choose.py

def choose(a):
  from random import randint
  b = randint(0, len(a) - 1)
  c = a[b]
  return(c)

使用函数的脚本-保存在

from function_choose import choose
list_a = ["dog", "cat", "chicken"]
print(choose(list_a))

输出为狗、猫或鸡

希望这有帮助,现在你可以创建功能包下载!

这是针对Python 2.7的

from FOLDER_NAME import FILENAME
from FILENAME import CLASS_NAME FUNCTION_NAME

文件名不带后缀

相关问题 更多 >