You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何嵌套包装类实例并直接访问属性?仿pathlib.Path实现

如何实现嵌套包装类实例的透明属性访问?

是否可以像下方示例一样,按需多次嵌套包装类实例,同时仍能像未包装时一样访问其属性?

class MyPath:
    def __init__(self, path=None):
        self.path = path


print(MyPath('my/file/path.txt').path)
# 输出: my/file/path.txt

print(MyPath(MyPath('my/file/path.txt')).path)
# 输出: <__main__.MyPath object at 0x105061ed0>

pathlib.Path实现了该特性,但我没法从源码里理清具体实现逻辑。

我目前想到的一种简单实现方案如下:

class MyPath:
    def __init__(self, instance_or_path=None):
        self._instance_or_path = instance_or_path

    @property
    def path(self):
        if isinstance(self._instance_or_path, MyPath):
            return self._instance_or_path.path
        return self._instance_or_path

但我希望找到一种无需类型检查的更优方案。

补充说明:如果类仅包含少量属性,上述方案或@Andr0id16提出的鸭子类型变体还可行,但属性较多时,每个属性都要添加类型检查或try/except会非常繁琐。

内容的提问来源于stack exchange,提问作者knerg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:22:02