我以PosixPath这种方式进行了子类化:
from pathlib import PosixPath
class Node(PosixPath):
def __new__(cls, *args, mykwarg=None, **kwargs):
self = super().__new__(cls, *args, **kwargs)
self._mykwarg = mykwarg
return self
并添加了几种@property方法。
现在,如果我想测试它(我使用pytest),它不起作用:
def test_Node(fs):
fs.create_file('simple.txt')
n = Node('simple.txt')
n.stat()
运行测试输出(在第 行n.stat()):
E FileNotFoundError: [Errno 2] No such file or directory: 'simple.txt'
并非完全出乎意料,因为我猜,只有PosixPath. 修补了pyfakefs,而不是我自己的类,即使它继承自PosixPath.
但我希望能够在保留pyfakefs. 继承的方法、字段等PosixPath仍然按pyfakefs原样修补PosixPath,只有我添加的属性没有修补。有没有办法做到这一点?