Assigning attributes to specific function instance
我有一段代码,从字典中提取一个函数,然后向它添加一个对象属性。但是,我在从函数内部访问它时遇到一些问题,可能是由于名称空间的原因。
1 2 3 4 5 6 | aFunction = FunctionsDictionary[key] aFunction.someObject = someObject aFunction() def aFunction(): someObject.doSomething() |
给
如果我在设置属性后执行dir(afunction),我可以看到它,但是函数中的dir()不会显示该属性。
虽然我可以更改代码使函数接受对象作为参数,但是如何引用在函数的"instance"上设置的这些属性?
下面是另一个例子:
1 2 3 4 5 6 7 | def myFunc(): print coolAttr func = myFunc func.coolAttr ="Cool Attribute" func() NameError: global name 'coolAttr' not defined |
似乎没有一种(好的)方法来获取对当前在python中运行的函数的引用;请参见,函数是否有一种引用自身的通用方法?用python代码把当前函数转换成一个变量?.如果您的所有函数都是使用
更大的问题是这可能没有你想要的效果…在python中,函数是通过引用传递的,因此如果
最好的答案可能是重写代码,以便将相关值作为参数传递。