Qualcuno sa perché la funzione os.path.join
non funziona con sottoclassi di str
?os.path.join con sottoclasse str
(sto usando Python3.2 x64 e x86 Python2.7 su Windows e il risultato è lo stesso)
Questo è il codice che ho
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'
e il risultato che voglio:
'C:\\the\\path\\some_file.txt'
ma l'uscita è \\some_file.txt
indipendentemente dal valore di self
.
so che posso fare sia str(self)
o salvarlo come self.path
e utilizzare in seguito, ma perché os.join.path
non accetta una sottoclasse str né generare un errore (come quando si utilizza un numero o qualsiasi tipo non stringa)?
Beh, questo è quello che ho appena scritto nella mia domanda ... Volevo sapere se si tratta di un bug o implementazione di CPython o qualcos'altro. BTW 'isinstance' restituirà True in questo caso – JBernardo
Sì, hai ragione. Deve avere 'stringa .__ classe __.__ nome__ == 'str'' –
No, l'interprete non controllerebbe quella stringa perché posso cambiarla in qualsiasi momento ... – JBernardo