抱歉,问题标题有点晦涩。
本质上,我需要执行以下操作。
我在 Python 中有一个函数,例如:
@Wrapper
def auselessfunction(dictionary):
dictionary["foo"] = 3
dictionary["bar"] = 5
然后我有一个装饰器对象,它将函数作为输入,例如
class Wrapper:
def __init__(self,function):
self.function = function
def __call__(self,*args):
self.function(*args)
我需要一种方法来在装饰器的init方法中确定函数使用的字典的键是什么。
有没有办法做到这一点?我一直在研究函数自省,可以使用以下方法找到键本身:
function.__code__.co_consts
但这给出了函数体中使用的所有常量,这可能很危险。
提前致谢。
编辑:
感谢您的快速响应。我可以理解我的具体问题有点模糊。简单来说,我想做的是创建一个装饰器,给定一个从字典中访问某些键的函数,然后可以找到/计算这些特定键的值。例如,如果字典表示二维列表中的位置,dictionary[0,0] 将表示当前索引,dictionary[0,1] 表示其正下方的索引,依此类推。我想知道是否有一种方法可以访问这些键,而无需直接访问 2D 列表中的实际位置。我不知道这是否使它更清楚...
例如,鉴于:
board =
[0,1,2,3,4,5],
[5,4,3,2,1,0],
[0,1,2,3,4,5],
[5,4,3,2,1,0],
[0,1,2,3,4,5],
[5,4,3,2,1,0]
dictionary[0,0] refers to 0,1,2,3,4,5,5,4.... successively, and
dictionary[0,1] refers to 5,4,3,2,1,0,0,1.... (the elements directly underneath)
为此,我正在尝试创建一个解决这些位置的装饰器,但我只想解决实际使用的位置,从而解决问题。
编辑:(@aya)
我很想提供更具体的代码,但这是在不知道我原来问题的答案的情况下尽可能接近的。理想情况下,我想要一个解决方案,每次访问字典时都将传递的对象作为键保存。问题是我想在调用字典访问方法之前知道。我能想到的最接近的事情是搜索函数返回的代码对象,以使用正则表达式或类似的涉及代码对象的字典访问调用。很抱歉,我没有比这更有帮助的了。