提问人:user2153235 提问时间:7/27/2023 最后编辑:user2153235 更新时间:8/12/2023 访问量:63
Python 约定指示方法链是否是方法级联?
Python convention indicating whether method chaining is method cascading?
问:
我正在开发 Python 和 Spark。我注意到 Python 使用 大量方法和/或属性的链接。我发现的很多东西 Python 的在线描述描述了方法级联,即使 它称为方法链。根据维基百科,链接返回一个对象,从中调用另一个方法。另一方面 hand,级联要求返回的对象是 “self”,所以它 是链接的子集。
有没有一种约定,可以快速识别何时 级联是专门用于而不是一般链接的?这里有两个例子 我从PySpark看到 教程:
df = spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "192.168.1.100:9092")
.option("subscribe", "json_topic")
.option("startingOffsets", "earliest") // From starting
.load()
df.selectExpr("CAST(id AS STRING) AS key", "to_json(struct(*)) AS value")
.writeStream
.format("kafka")
.outputMode("append")
.option("kafka.bootstrap.servers", "192.168.1.100:9092")
.option("topic", "josn_data_topic")
.start()
.awaitTermination()
它确实有助于加速代码的弄清楚,尤其是 当一个人不熟悉所讨论的类的生态系统时。在 级联,它只是对同一对象的方法的连续调用。 但是,非级联的链式需要更加小心 破译,因为对象可能会在链中途发生变化。
答:
0赞
user2153235
7/30/2023
#1
这个答案是根据 Barmar 和 deceze 的评论中提供的链接综合的。
方法级联在 Python 中很少见,因为 Guido van Rossum 建议(要求?)将库设计成方法不会因 self 突变而返回 self。
反过来,这样做的原因是为了避免混淆方法链的特定实例是否是方法级联,本质上是通过(在很大程度上)消除后者。
这是引用的来源。
评论