认为
class D:
def __init__(self,id): self.id = id
def __get__(self,obj,type=None):
print(self.id,"__get__ is called")
class C:
d1 = D(1)
d2 = D(2)
d3 = D(3)
c = C()
然后在调用期间hasattr(c,"d1")
调用__get__
方法C.d1
。为什么?不应该hasattr()
只查字典吗?
<tab>
在交互式 CPython-version-3.6.10 会话中按下完成时会发生相同(但更奇怪) ,如c.d<tab>
. 在这种情况下__get__
,将为除最后一个之外的所有匹配属性调用。这里发生了什么?