自己写的一个File类,继承Path,想当然的这样写了:
from pathlib import Path
class File(Path):
def __init__(self,filepath:str):
super().__init__(filepath)
pass
然后运行就报错了:
网上找到了问题的答案
python - Error with simple subclassing of pathlib.Path: no _flavour attribute - Stack Overflow
原来是因为 Path类__new__方法在做环境判断时,会调用cls的_flavour,然后就找到我们自定义类了,
所以我们自定义类还要继承 WindowsPath 或 PosixPath,最完美的解决方案如下:
from pathlib import Path
class File(type(Path()),Path):
def __init__(self,filepath:str):
pass
然后我们就可以继承Path类,进而方便后面的封装啦