2016-03-15 43 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中称为“调用”的方法。 –

回答