“”“为我的IF(交互式小说)模块做一个更好的版本,这样你就可以创建一个导入它的模块,然后开始添加垃圾 三件事-如果你算上调试变量,四件事- 变量PLAYER_NAME、PLAYER_LOCATION和PLAYER_INVENTORY。在基地他们是“卢克”,没有,和名单 adventure内容模块使用“from mask_IF import*”,更改这些变量中的任何一个都会使其位于当前命名空间中—它不会更改导入的变量。 因为,我无法掩饰_IF.变量=值。在
我想保留我的“from mask_IF import*”,但同时我有这些变量,这些变量应该在每个单独的冒险模块中定义,并在主模块中使用。”“”在
在==== 在主模块中:
PLAYER_NAME = "Luke"
...
class ActionHelp(Action):
def ActionHandle(self, Object1, Object2):
print "No help for you, " + PLAYER_NAME + "!"
在冒险模块中:
^{pr2}$在==== 你通常叫卢克 但今天你是冒险测试者001
help No help for you, Luke! The command is help The Object1 is NOT GIVEN The Object2 is NOT GIVEN
是的,你做不到。“from mask_IF import*”正在当前模块中创建一个名为PLAYER_NAME的新变量,它恰好指向相同的底层数据。它是mask_IF模块中变量的别名。当您尝试为PLAYER_NAME指定其他值时,您会告诉局部变量指向新的内容,这对mask_IF变量指向的内容没有任何影响。在
你不能有理由这么做。它可以通过创建一个具有适当属性的对象来进行模拟,但是首先您最好不要导入*。在
如果要使用类似StrObj的对象而不是字符串,那么您将处理一个可变类型引用,该引用可以从任何地方更新值。代码中唯一的区别在于设置它时调用
Set()
,而不是= '...'
。在假设在
^{pr2}$mask_IF.py
,PLAYER_NAME = StrObj('Some Name')
。。。在所说的一切…
我认为最好是用
NAME
的属性定义一个Player
对象,等等。。。只是用它来代替。我建议少用import *
。在相关问题 更多 >
编程相关推荐