python的字符串有 - 这个操作吗?

运行了一下这段代码,发现不会报错。尴尬了,我不懂为什么会这样


看到如下代码

def _prepare(self, api_name, param_array, file_array):
        if not api_name.startswith('/'):
            api_name = '/' + api_name

        self.request_url = self.api_host - '/' if self.api_host.endswith('/') else self.api_host

prepare方法中,self.api_host是个字符串
那么 self.api_host - '/' 是啥意思呢?

命令行中尝试了一下这个,会报错的啊

阅读 2.5k
4 个回答

我猜 他原意是想:如果api_host以/结尾的话,就去掉(减去)。
但是字符串只支持+,不支持-。
(我擦,没有注意你第一句话:代码没有报错)
应该是运算符重载了。如果楼上所说,你整个项目全局搜索一下__sub__呢。
不过,我个人觉得,这种做法挺low的。会导致代码可读性太差。

是不是把运算符重载了……看看它有没有改__sub__

把self.api_host的类型打印出来看看是不是str

print type(self.api_host)

跟研发确认了,这是一个bug

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题