Python \ PySpark代码:这不是死循环吗?

Python \ PySpark code: Isn't this an infinite loop?

我正在查看 class pyspark.mllib.feature.IDFModel

的 PySpark 代码

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

我很困惑为什么这不会创建无限循环?

这是class中的代码:

class IDFModel(JavaVectorTransformer):

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

这是 JavaVectorTransformer 的代码Class

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 进而 returns self.call("transform",vector)

奇怪的是,这似乎在没有创建无限循环的情况下起作用。

有什么想法吗?

参考link中JavaModelWrapper的代码https://spark.apache.org/docs/1.5.0/api/python/_modules/pyspark/mllib/common.html

self.call 不是对同一方法的递归调用。在调用 self.call 时调用父 class JavaModelWrapper 中有一个名为 "call" 的方法。