我正在使用pathlib,我想向pathlib.Path添加一个上下文管理器,类似于path.py的做法。 这是一个例子:
import pathlib
def __enter__(self):
self._old_dir = self.cwd()
os.chdir(self)
return self
def __exit__(self, *_):
os.chdir(self._old_dir)
pathlib.Path._old_dir=None
pathlib.Path.__enter__=__enter__
pathlib.Path.__exit__=__exit__
z=pathlib.Path('/home/another/user')
print pathlib.Path.cwd()
#It prints '/home/myuser/name/'
with z:
print pathlib.Path.z
#should be printing /home/another/user
然而,我得到了:
AttributeError: 'PosixPath' object attribute '_old_dir' is read-only
它与在pathlib.Path定义中使用__slots__
有关。我现在很好奇,我应该怎样做才能解决这个限制问题的猴子补丁路径库添加这个"功能"?
NB。我知道我可以继承,这是一个好奇的问题,如果有人想这样做,他会怎么做?