2015-08-21 17 views
0

我對python相當陌生,我試圖理解一段代碼(我不能發佈實際的代碼),它包含一個引用自身的函數在它的代碼中,它似乎不是遞歸的,我不能解決它的影響。 我的意思下面是一個例子:在python腳本中建立自引用函數的動作

def function(self): 
    if self.property == 1: 
     a = self.object1.function 
    elif self.property == 2: 
     a = self.object1.function + self.object2.function 

這可能是真的很明顯,但我不能看到它,我讀了很多關於遞歸函數或自我指涉功能以前的問題,但我找不到任何結構化的東西,謝謝!

+1

添加兩個函數(而不是他們計算的)?這聽起來不對。 –

+0

函數是否是一個['@ property'](https://docs.python.org/2/library/functions.html#property)?然後訪問'function'屬性將調用'function()'。 – mkrieger1

+0

這是一個@屬性,抱歉應該注意到,以前沒有遇到過符號,並沒有意識到它可能會影響函數(我假設它可以,它是函數啓動之前的行) – aml

回答

0

看起來這個函數是一個類的一部分,它是一個遞歸數據結構,例如具有子節點的樹。在這種情況下,每個實例至少有兩個子節點object1object2

假設這個function不是調用自己(遞歸),而是對其子節點調用function方法是正確的。

在某些時候,function將返回一個字符串或數字;假設是因爲+如果self.property == 2

此外,這類似於樹數據結構。

class Tree(): def __init__(left, property, right): self.property = property self.object1 = left self.object2 = right

+0

Turns在主函數內的'函數'這個術語只是該對象(屬於一個自定義類)的一個屬性,它與該函數具有相同的名稱。 所以主函數稱爲屬性,它是一個整數,然後它可以加在一起。 對不起,我只是沒想到這個函數被賦予了與它所調用的屬性相同的名字。 – aml

+0

啊。聽起來不錯。聽起來像一個簡單的屬性重命名將有助於緩解一些混淆。感謝您的更新。 – cevaris