我有一段代碼,其中我拉函數出字典的,然後添加對象屬性給它。但是,我有一些問題從函數內部訪問它,大概是由於命名空間。將屬性分配給特定功能實例
aFunction = FunctionsDictionary[key]
aFunction.someObject = someObject
aFunction()
def aFunction():
someObject.doSomething()
給人NameError global name 'someObject' is not defined.
如果我做一個目錄(機能缺失)後,我設置),從內部功能不顯示屬性的屬性,我可以看到它,但是一個目錄(。
雖然我可能更改代碼有函數接受對象作爲參數,我怎麼把這些屬性的功能的「實例」設置?
下面是另一個例子:
def myFunc():
print coolAttr
func = myFunc
func.coolAttr = "Cool Attribute"
func()
NameError: global name 'coolAttr' not defined
一般而言,似乎不喜歡你可以在運行時將屬性添加到函數引用(即一個裝飾的外部施加到功能的定義)。如果在給它分配屬性後打印函數實例,然後在函數中打印自己,它們不是同一個對象(不同的內存地址)。我覺得這很混亂。我從字典中創建函數的一個實例,對其進行修改,但是當它運行時,它不是同一個對象。 – taylormade201 2014-10-01 16:22:24
在一個隨機函數體內,'self'不指向當前正在執行的函數。 'self'只在明確給出類方法的第一個參數時才被定義;它不是關鍵字。見例如http://stackoverflow.com/a/2709832/4091874和https://docs.python.org/2/tutorial/classes.html#random-remarks。 – caseygrun 2014-10-01 17:39:18
對不起,我的評論,我寫結合功能的裝飾: '高清綁定(FUNC): 回報FUNC .__得到__(FUNC,類型(FUNC))' – taylormade201 2014-10-01 17:53:29