os.path.join
の機能がstr
のサブクラスで機能しない理由は誰にも分かりますか?os.path.joinとstrサブクラス
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'
と私が望む結果を持っているコードだ
(私はWindows上でPython3.2のx64およびx86のPython2.7を使用していますし、結果は同じである)
'C:\\the\\path\\some_file.txt'
ですが、出力はself
の値にかかわらず\\some_file.txt
です。
私はどちらかstr(self)
を行うかself.path
として保存し、後で使用することができます知っているが、なぜos.join.path
がstrのサブクラスを受け入れず(あなたは数または任意の非文字列型を使用するときのように)エラーが発生していないのですか?
まあ、それは私がちょうど私の質問で書いたことです...私はそれがバグかCPythonの実装かどうかを知りたかったのです。 BTW 'isinstance'はこの場合はTrueを返します – JBernardo
そうですね。 'string .__ class __.__ name__ == 'str'' –
いいえ、私はいつでもそれを変更できるので、インタプリタはその文字列をチェックしませんでした。 – JBernardo