我不确定这是不是个普遍的场景,还是算作特殊的需求。如下面的代码所示,我想用 objprint 来打印 Struct 类型的变量。但是因为 dataclass 已经有了 __str__ 的实现,我只能把 honor_existing 参数设为 False。可是这样 pathlib.Path 中 parent 属性会让 objprint 在输出时陷入无限递归,直到 depth。然而实际上我不需要对 pathlib.Path 的 honor_existing 设为 False。
from dataclasses import dataclass
from pathlib import Path
from objprint import objprint
@dataclass
class Struct:
path: Path = Path("~")
if __name__ == "__main__":
objprint(Struct(), honor_existing=False, depth=5)

我当前是通过加上自定义的 Formatter 实现上面的需求
from dataclasses import dataclass
from pathlib import Path
from objprint import objprint
@dataclass
class Struct:
path: Path = Path("~")
if __name__ == "__main__":
objprint.register_formatter(Path, str)
objprint(Struct(), honor_existing=False, depth=5)
objprint.unregister_formatter(Path)

我不确定这是不是个普遍的场景,还是算作特殊的需求。如下面的代码所示,我想用 objprint 来打印 Struct 类型的变量。但是因为 dataclass 已经有了 __str__ 的实现,我只能把 honor_existing 参数设为 False。可是这样 pathlib.Path 中 parent 属性会让 objprint 在输出时陷入无限递归,直到 depth。然而实际上我不需要对 pathlib.Path 的 honor_existing 设为 False。
我当前是通过加上自定义的 Formatter 实现上面的需求