“”“制作我的IF(互动小说)模块的更好版本,这样您就可以创建一个导入它的模块,然后就可以开始添加垃圾了 三件事 - 如果你算上DEBUG变量那么四个 - 变量PLAYER_NAME,PLAYER_LOCATION和PLAYER_INVENTORY。在基地他们是“卢克”,无,和列表 冒险内容模块使用“from mask_IF import *”,更改任何变量使其在当前命名空间中 - 它不会改变导入的变量。 由于*,我不能使用mask_IF.VARIABLE = value。
我想保留我的“来自mask_IF import *”,但同时我有这些变量应该用每个单独的冒险模块定义并在主模块中使用。 “”“
==== 在主要模块中:
PLAYER_NAME = "Luke"
...
class ActionHelp(Action):
def ActionHandle(self, Object1, Object2):
print "No help for you, " + PLAYER_NAME + "!"
在冒险模块中:
from mask_IF import *
Text("Your name is normally " + PLAYER_NAME)
...
PLAYER_NAME = "Adventure_Tester #001"
Text("But today you are " + PLAYER_NAME)
==== 你的名字通常是卢克 但今天你是Adventure_Tester#001
帮助 卢克,对你没有帮助! 命令是帮助 Object1没有GIVEN Object2不是GIVEN
答案 0 :(得分:3)
由于你给出的原因,你不能这样做。可以通过创建具有适当属性的对象来模拟它,但是您也可以不导入*开始。
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您使用StrObj之类的对象而不是字符串,那么您将处理一个可变类型引用,该引用可以从任何地方更新值。您的代码唯一的区别在于通过调用Set()
而不是= '...'
来设置它。
class StrObj(object):
def __init__(self, value=''):
self.value = value
def __add__(self, other):
return other + self.value
def Set(self, value):
self.value = value
假设在mask_IF.py
,PLAYER_NAME = StrObj('Some Name')
...
from mask_IF import *
Text("Your name is normally " + PLAYER_NAME)
...
PLAYER_NAME.Set("Adventure_Tester #001")
Text("But today you are " + PLAYER_NAME)
所有这一切......
我认为你最好定义一个Player
对象,其中包含NAME
等属性......而只是使用它。我建议稀疏地使用import *
。