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

我正在编写一个有趣的 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()
308824 次浏览
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()

正是这些一直在运行的代码行导致它在导入和执行时都在运行。

如果您能够包含那些不能正常工作的代码(来自“其他”文件) ,那将会非常有帮助,但是我怀疑您可以通过适量的“ eval”函数来实现您想要的功能。

例如:

def run():
print "this does nothing"


def chooser():
return "run"


def main():
'''works just like:
run()'''
eval(chooser())()

选择器返回要执行的函数的名称,eval 然后将一个字符串转换为要就地执行的实际代码,括号结束函数调用。

首先你需要确定你的文件是否在同一个工作目录。接下来,您可以导入整个文件。比如说,

import myClass

或者可以从文件中导入整个类和整个函数,

from myClass import

最后,您需要从原始文件创建类的实例并调用实例对象。

如果,像我一样,你想做一个函数包或者一些人们可以下载的东西,那么它是非常简单的。只需将函数写入一个 PYTHON 文件中,并将其保存为您想在 PYTHON 目录中使用的名称。现在,在你想要使用这个的脚本中,你输入:

from FILE NAME import FUNCTION NAME

注意-大写字母的部分是您键入文件名和函数名的地方。

现在你只需要使用你的函数就好了。

例如:

保存在 C: Python27 as FUNCTION _ select. 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

FILENAME 是后缀 w/o

您可以使用下面的语法-

from FolderName.FileName import Classname