2016-03-15 46 views
0

我一直在尋找通過類pyspark.mllib.feature.IDFModelPython PysSpark代碼:這不是一個無限循環嗎?

http://spark.apache.org/docs/latest/api/python/pyspark.mllib.html#pyspark.mllib.feature.IDFModel.transform

我很困惑,爲什麼這不會產生一個無限循環的PySpark代碼?

這是類代碼:

class IDFModel(JavaVectorTransformer): 

    def transform(self, x): 
    return JavaVectorTransformer.transform(self, x) 

,這是爲JavaVectorTransformer類

class JavaVectorTransformer(JavaModelWrapper, VectorTransformer): 

    def transform(self, vector): 
    if isinstance(vector, RDD): 
     vector = vector.map(_convert_to_vector) 
    else: 
     vector = _convert_to_vector(vector) 
    return self.call("transform", vector) 

IDFModel.transform()電話JavaVectorTransformer.transform這反過來又返回self.call("transform",vector)

奇怪的是,這似乎代碼在沒有創建無限循環的情況下工作。

有什麼想法?

+1

self.call不是對同一方法的調用。在調用self.call時會調用父類JavaModelWrapper中稱爲「調用」的方法。 –

回答