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

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

这是总是运行,导致它在导入时以及执行时运行。

 from FOLDER_NAME import FILENAME from FILENAME import CLASS_NAME FUNCTION_NAME 

FILENAME不带后缀

如果像我一样,你想制作一个function包或者人们可以下载的东西,那么这很简单。 只需将你的函数写入一个python文件,并将其保存为您的PYTHON DIRECTORY中所需的名称即可。 现在,在你想要使用的脚本中,input:

 from FILE NAME import FUNCTION NAME 

注 – 大写字母的部分是您input文件名和函数名的地方。

现在你只是使用你的function,但是它的意思是。

例:

function脚本 – 保存在C:\ Python27作为function_choose.py

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

脚本使用function – 保存在任何地方

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

输出将是狗,猫或鸡

希望这个帮助,现在你可以创buildfunction包下载!

——————————–这是为Python 2.7 ————- ————————

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

 import myClass 

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

 from myClass import 

最后,你需要从原始文件创build一个类的实例,并调用实例对象。

如果你包含的代码不工作(来自“其他”文件),那真的会有所帮助,但是我怀疑你可以用一个健康的“eval”函数来做你想做的事情。

例如:

 def run(): print "this does nothing" def chooser(): return "run" def main(): '''works just like: run()''' eval(chooser())() 

select器返回要执行的函数的名称,然后eval将string转换为实际的代码以便就地执行,括号结束函数调用。