我希望
pathlib.Path
自动输出一些破坏性命令的日志,例如path.rename(new_path)
。
我用日志功能创建了
pathlib.Path
的子类,并将 from pathlib import Path
替换为 from mylib import MyPath as Path
。pathlib.Path
现有的子类,例如pathlib.WindowsPath
,它是路径实例的实际实现类。
from pathlib import Path
from mynicelib import MyPath
p = MyPath('/path/to/file')
isinstance(p, MyPath) # -> False
isinstance(p, pathlib.Path) # -> True
type(p) # -> <class 'pathlib.WindowsPath'>
只需做一些猴子修补:
from pathlib import Path
Path.oldrename = Path.rename
def rename(self,b):
print("Inside my rename")
self.oldrename(b)
Path.rename = rename
p = Path('./x.c')
p.rename('y.c')
子类化 pathlib 是有问题的。有关此主题的相关讨论位于:
目前最好的解决方法是:
class MyPath(type(pathlib.Path())):
...