owner当从类而不是类的实例访问属性时使用,在这种情况下
instance为
None。
在您的例子试图像
print(Container.managed_attr)将失败,因为
instance是
None如此
instance._name会引发一个
AttributeError。
您可以通过检查是否为来改善此行为
instance isNone,这对于记录日志或引发更有用的异常(该描述符所属的类属于该
owner属性)可能很有用。例如:
def __get__(self, instance, owner): if instance is None: # special handling for Customer.managed_attr else: return instance._name
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)