Có ai biết tại sao hàm os.path.join
không hoạt động với các lớp con của str
?os.path.join với str subclass
(Tôi đang sử dụng Python3.2 x64 và x86 Python2.7 trên Windows và kết quả là như nhau)
Đó là đoạn code tôi có
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'
và kết quả tôi muốn:
'C:\\the\\path\\some_file.txt'
nhưng đầu ra là \\some_file.txt
bất kể giá trị của self
.
Tôi biết tôi có thể thực hiện str(self)
hoặc lưu trữ self.path
và sử dụng sau, nhưng tại sao os.join.path
không chấp nhận phân lớp str cũng không tăng lỗi (như khi bạn sử dụng một số hoặc bất kỳ loại chuỗi nào)?
Vâng, đó là những gì tôi vừa viết trong câu hỏi của tôi ... Tôi muốn biết nếu đó là một lỗi hoặc thực hiện CPython hoặc cái gì khác. BTW 'isinstance' sẽ trả về True trong trường hợp này – JBernardo
Vâng, bạn đã đúng. Nó phải có 'string .__ class __.__ name__ == 'str'' –
Không, trình thông dịch sẽ không kiểm tra chuỗi đó bởi vì tôi có thể thay đổi nó bất cứ lúc nào ... – JBernardo