Skip to content

Feature: Partially setting the honor_existing option #102

Description

@ChenMoFeiJin

我不确定这是不是个普遍的场景,还是算作特殊的需求。如下面的代码所示,我想用 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)

image


我当前是通过加上自定义的 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)

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions