有人知道为什么os.path.join
函数不能与str
的子类一起使用吗?
(我在Windows上使用Python3.2 x64和Python2.7 x86,结果相同)
这是我的代码:
class Path(str):
def __add__(self, other):
return Path(os.path.join(self, other))
p = Path(r'C:\the\path')
d = p + 'some_file.txt'
我需要的结果是:
'C:\\the\\path\\some_file.txt'
无论self
的值是什么,输出结果都是\\some_file.txt
。
我知道我可以使用str(self)
或将其存储为self.path
并稍后使用,但为什么os.join.path
不接受str子类,也不会引发错误(例如当您使用数字或任何非字符串类型时)?
isinstance
会返回True。 - JBernardostring.__class__.__name__ == 'str'
。 - Matt Williamsonos.path.join
使用+ =
将路径片段连接在一起,如果更改为+
,会导致无限递归。 - Ethan Furman