Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将对象或其值从一个脚本传递到另一个脚本?_Python_File_Class_Object_Import - Fatal编程技术网

在Python中将对象或其值从一个脚本传递到另一个脚本?

在Python中将对象或其值从一个脚本传递到另一个脚本?,python,file,class,object,import,Python,File,Class,Object,Import,我对Python相当陌生,尤其是类/对象和术语。但我想做的是:我有一个目标“英雄”。此对象具有“健康”变量和“库存”列表。我在主游戏文件(称为“game.py”)中创建对象。然后我导入另一个文件(比如:“minigame.py”),我想执行它 我的问题是:我希望能够在小游戏脚本中使用“英雄”对象及其健康变量和库存列表,对其进行更改,并将其传递回主游戏文件。但当我尝试导入“hero”时,它只是创建了该类的另一个对象 是否有可能让脚本以我描述的方式进行通信?在另一个脚本中使用对象并对其进行更改 #

我对Python相当陌生,尤其是类/对象和术语。但我想做的是:我有一个目标“英雄”。此对象具有“健康”变量和“库存”列表。我在主游戏文件(称为“game.py”)中创建对象。然后我导入另一个文件(比如:“minigame.py”),我想执行它

我的问题是:我希望能够在小游戏脚本中使用“英雄”对象及其健康变量和库存列表,对其进行更改,并将其传递回主游戏文件。但当我尝试导入“hero”时,它只是创建了该类的另一个对象

是否有可能让脚本以我描述的方式进行通信?在另一个脚本中使用对象并对其进行更改

# game.py

class Hero(object):
    instruction1 = "\nYou need to set your hero's name" 
    name = ""
    health = 100
    inventory = []  

    def __init__(self): 
        self.setting()

    def setting(self):
        self.set_name()
        print('\nHi', self.name, '\n')
        self.status()

    def set_name(self):
        print(self.instruction1)
        self.name = input('')

    def status(self):
        print('Your health stat is: ', self.health) 

    def show_inventory(self): 
        print("Your current inventory contains: ", self.inventory) 

hero=Hero() 

import minigame
然后在我的“迷你游戏”程序中,我尝试导入英雄,但当我运行代码时,它只创建了一个新的英雄:

# minigame.py

print("\nminigame starts here\n")

from game import hero
然后我运行“game.py”,输出如下所示:

你需要设定你英雄的名字 链接

Hi-link

你的健康数据是:100

小游戏从这里开始

你需要设定你英雄的名字 塞尔达

嗨,塞尔达


您的健康状态为:100

这里只有一个实例,
hero
。是什么让你认为正在创建一个新的?我刚刚编辑了我的问题并添加了输出:两次询问我的名字,一次是在“game.py”运行时,另一次是在“minigame.py”运行时。@Eisfuechin“两次询问我的名字”:你的
minigame.py
不是有效模块。阅读:,遵守
如果uuu name_uuuu==“uuu main_uuuuuu”:
部分。你有一个循环导入(即游戏导入小游戏,小游戏导入游戏),这是不好的,这也是为什么看到英雄实例化两次的原因。首先,如果您真的需要两个单独的脚本,您应该认真思考。你有两个独立的游戏,都需要相同的蓝图(即类)的英雄?如果您可以回答是,那么您应该将
英雄
分离到第三个python文件中,并且只从两个游戏脚本导入这个新模块(而不是相反)。然而,这只会解决实例化发生两次的问题,而不是原来的问题。