繁体   English   中英

链式 getattr 方法调用

[英]Chained getattr method calls

假设我有

  class Blah:
    def __init__(self):
       self.foo = ...
       self.bar = ...

foobar没有实现getattr 而且他们没有 attr "abc" 和 "xyz"

有没有可能欺骗它做

  b = Blah()
  x = b.foo.abc
  y = b.bar.xyz

或者

  x = b.abc.foo
  y = b.xyz.bar

foo 和 bar 甚至可能不存在,即某种虚拟

不,这是不可能的。 当你这样做

x = b.foo.abc

它本质上相当于

temp = b.foo
x = temp.abc

当您使用.abc时,不再引用Blah实例,您只是从foo属性中存储的任何值中获取它。 因此,如果该值没有abc属性或__getattr__方法,您将收到错误消息。

Blah无法拦截对其属性下一个级别的访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM