我有以下功能:
def mapLocation1():
if rooms[1]["mapLoc"] == rooms[currentRoom]["mapLoc"]:
#return(stuff)
elif "item" in rooms[1]:
#return(stuff)
else:
#return(stuff)
这个特殊的功能可以在我的程序中多次使用,可能会多达三十次。当然,复制上述功能很多次都不能提供漂亮的代码,这是一个很容易改变的麻烦,无论如何它都可能会被扩展,所以我想把它变成一个动态的功能。但是,问题在于,我的代码指的是我在别处设置的字典。这本词典看起来像这样:
rooms = {
1 : {
"mapLoc" : 1,
#MoreStuff
},
2 : {
"mapLoc" : 2,
#MoreStuff
},
}
字典中的几个子集已编号,此编号始终与上述代码中使用的 mapLocation#()相同。字典中的条目必须由于其内容的性质而手工定义,但如果我可以使函数动态而不是编写几十个相同的函数,除了提到的数字之外三次占用太多的空间我很喜欢。 Using the answer to this question I found the following code to make a function dynamic:
def makefunc(val):
def somephase():
return '%dd' % (val,)
return somephase
Phase2 = makefunc(2)
Phase3 = makefunc(3)
但是,我已经尝试将其与我的功能相结合,使其充满活力,但到目前为止,我没有运气。关于如何做到这一点有什么想法吗?
答案 0 :(得分:0)
如何使用实例和类来实现这一目标?
您可以在类级别存储共享字典,并为每个对象实现不同的行为。