Czy ktoś wie, dlaczego funkcja os.path.join
nie działa z podklasami str
?os.path.join z podklasą str
(używam Python3.2 x64 i x86 Python2.7 na Windows, a wynik jest taki sam)
To kod mam
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'
a wynik chcę:
'C:\\the\\path\\some_file.txt'
ale wyjście to \\some_file.txt
bez względu na wartość self
.
wiem, że mogę zrobić albo str(self)
lub zapisać go jako self.path
i użyć później, ale dlaczego os.join.path
nie akceptuje podklasy str ani podnieść błąd (jak w przypadku korzystania z numeru lub dowolnego innego typu string)?
Cóż, właśnie to właśnie napisałem w moim pytaniu ... Chciałem wiedzieć, czy to błąd, czy implementacja CPython, czy coś innego. BTW 'isinstance' zwróci True w tym przypadku – JBernardo
Tak, masz rację. Musi mieć 'string .__ class __.__ name__ == 'str'' –
Nie, interpreter nie sprawdzi tego ciągu, ponieważ mogę go zmienić w każdej chwili ... – JBernardo