在Python 3中创建引用字典中不同条目的动态函数

时间:2016-05-30 15:57:04

标签: python python-3.x dictionary dynamic

我有以下功能:

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)

但是,我已经尝试将其与我的功能相结合,使其充满活力,但到目前为止,我没有运气。关于如何做到这一点有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如何使用实例和类来实现这一目标?

您可以在类级别存储共享字典,并为每个对象实现不同的行为。