Python如何实现直接调用嵌套属性类方法同时完成对象创建
嵌套属性动态创建与方法直接访问方案
原实现问题分析
原有代码的__getattr__方法将属性绑定为Foo类本身而非类实例,仅支持单层属性访问,多级嵌套调用会失效;同时bar方法未适配实例调用的参数规则,后续如果需要扩展实例属性访问逻辑会存在参数不匹配问题。
优化后实现
修改__getattr__逻辑返回Foo实例即可,无需提前访问嵌套属性,还可支持任意深度的嵌套调用:
class Foo: def bar(self): print("Hello World") def __getattr__(self, name): # 访问不存在的属性时自动生成Foo实例并绑定到当前对象 nested_instance = Foo() setattr(self, name, nested_instance) return nested_instance
使用验证
直接执行调用即可正常输出:
a = Foo() # 直接调用无需提前访问a.b a.b.bar() # 输出 Hello World # 支持任意深度的嵌套调用 a.x.y.z.f.bar() # 同样输出 Hello World
内容的提问来源于stack exchange,提问作者Kaiz Lee
相关产品推荐
相关产品推荐

