我想用一个额外的构造函数断言一个pathlib.Path子类型,如下所示

import pathlib

class TempDirPath(type(pathlib.Path())):
    def __init__(self, path):
        assert not os.path.isabs(path), "Temporary directory path must be relative"
        super(TempDirPath, self).__init__(path)


但这错误为

TypeError: object.__init__() takes no parameters


为什么super(TempDirPath, self)评估为object。不应该是type(pathlib.Path())。我已经在网上尝试了不同的建议解决方案,但没有任何进展。怎么办

最佳答案

更新:经过一番挖掘,结果发现

class TempDirPath(type(pathlib.Path())):
    def __init__(self, path):
        assert not self.is_absolute(), "Temporary directory path '{}' must be relative".format(self)


解决了它,因为Path是在__new__成员中初始化的。它没有__init__成员。

关于python - pathlib.Path子类型的构造方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43250428/

10-12 20:42