出于设计原因,与Ruby或Smalltalk相比,Python的连接似乎不关注连接的项目,而是关注符号。
我认为OOP的基础之一是,我们有对象,这是我们有兴趣处理的项目,然后我们向它们发送消息。 因此,看起来很自然,我有一组项目,并且需要将它们放入一个字符串中,因此可以这样做: ["x", "o", "o"].join(" | ") # joining a tic-tac-toe row in Ruby (Smalltalk的操作方式与此相同)。" | "在某种程度上,它被认为是一个参数,是如何加入的一个象征。它可以是" "也一样,如果游戏板是要简单。因此,联接元素" | "并不是我们特别感兴趣的东西,也不是程序中的主要对象具有特别的重要性或意义。 如果Python使用 " | ".join(["x", "o", "o"]) 确实感觉有点奇怪,几乎感觉就像我们在向论点传递消息,以告诉论点某些事情。也许Python更具程序性?告诉连接字符串为我们执行一些职责? 是否保存实现,以便我们不必join为每个集合类定义一个?但是我们是否也可以为任何集合类编写一次(例如在Ruby中)不是真的吗? module Enumerable def my_join(joiner) self.inject {|a,b| a.to_s + joiner + b.to_s} end end (类似这样,调用to_s每个项目,依靠to_s每个类的做自己的事情,转换为字符串,然后将它们串联)。因此,我们不必为String,Hash或Set或我们拥有的任何集合类中的每一个实现。 还是Python出局不走OOP路线?它采用len("abc")和type([])替代"abc".len()或者[].type()甚至在Python3也似乎。Python是出于设计原因这样做吗?