向pathlib.path添加上下文管理器

时间:2016-06-04 09:07:04

标签: python python-2.7 path monkeypatching

我正在使用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。我知道我可以继承,这是一个好奇的问题,如果有人想这样做,他会怎么做?

0 个答案:

没有答案