gpt4 book ai didi

python - 将属性分配给特定的函数实例

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:09 25 4
gpt4 key购买 nike

我有一段代码,我从字典中提取一个函数,然后向其中添加一个对象属性。但是,我在函数内访问它时遇到了一些问题,可能是由于命名空间的原因。

aFunction = FunctionsDictionary[key]
aFunction.someObject = someObject
aFunction()

def aFunction():
someObject.doSomething()

给出 NameError 全局名称“someObject”未定义。

如果我在设置属性后执行 dir(aFunction) 操作,我可以看到它,但是函数内的 dir() 不会显示该属性。

虽然我可以更改代码以使函数接受对象作为参数,但如何引用在函数的“实例”上设置的这些属性?

这是另一个例子:

def myFunc():
print coolAttr

func = myFunc
func.coolAttr = "Cool Attribute"
func()
NameError: global name 'coolAttr' not defined

最佳答案

似乎没有一种(好的)方法来获取对 Python 中当前正在运行的函数的引用;请参阅Is there a generic way for a function to reference itself?Python code to get current function into a variable? 。如果所有函数都使用 def 定义名称,您只需通过函数名称引用该函数(例如示例中的 aFunction)即可获取其属性函数体。

一个更大的问题是,这可能达不到你想要的效果...Python中函数是通过引用传递的,所以如果aFunctiondict中出现多次,仍然只有函数对象的一个​​副本。因此,如果您在 dict 的多个值上设置属性,所有这些值都恰好指向同一个函数,那么您最终只会存储属性的最后一个值......很难知道如果您需要的话,无需更多详细信息。

最好的答案可能是重写您的代码,以便相关值作为参数传递。

关于python - 将属性分配给特定的函数实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26133434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com