gpt4 book ai didi

python - pathlib.Path : no _flavour attribute 的简单子(monad)类化错误

转载 作者:行者123 更新时间:2023-12-04 10:03:52 47 4
gpt4 key购买 nike

我正在尝试从 pathlib 子类 Path,但我在实例化时失败并出现以下错误

from pathlib import Path
class Pl(Path):
def __init__(self, *pathsegments: str):
super().__init__(*pathsegments)

实例化错误

AttributeError: type object 'Pl' has no attribute '_flavour'

更新:我正在从 WindowsPath 继承,但仍然无法正常工作。

TypeError: object.__init__() takes exactly one argument (the instance to initialize)

最佳答案

部分问题是 Path 类在 __new__ 中实现了一些条件逻辑,这并不真正适合子类化。具体来说:

    def __new__(cls, *args, **kwargs):
if cls is Path:
cls = WindowsPath if os.name == 'nt' else PosixPath

这将从 Path(...) 返回的对象类型设置为 PosixPathWindowsPath,但仅 如果 cls 是 Path,这对于 Path 的子类永远不会成立。

这意味着在 __new__ 函数中,cls 将没有 _flavour 属性(这是为 *WindowsPath 和 *PosixPath 类),因为您的 Pl 类没有 _flavour 属性。

我认为您最好显式继承其他类之一,例如 PosixPathWindowsPath

关于python - pathlib.Path : no _flavour attribute 的简单子(monad)类化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61689391/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com