假设我有
class Blah:
def __init__(self):
self.foo = ...
self.bar = ...foo和bar不实现getattr。他们没有"abc“和"xyz”
能骗到它吗?
b = Blah()
x = b.foo.abc
y = b.bar.xyz或
x = b.abc.foo
y = b.xyz.barfoo和bar甚至可能不存在,即某种虚拟的。
发布于 2022-07-31 02:23:00
不,这不可能。当你做的时候
x = b.foo.abc它实质上等同于
temp = b.foo
x = temp.abc当您使用.abc时,不再有对Blah实例的引用,您只是从存储在foo属性中的任何值获取它。因此,如果该值没有abc属性或__getattr__方法,您将得到一个错误。
Blah无法拦截对其属性下一个级别的访问。
https://stackoverflow.com/questions/73180244
复制相似问题