为什么python描述符__get__方法接受所有者类作为arg?

为什么python描述符__get__方法接受所有者类作为arg?,第1张

为什么python描述符__get__方法接受所有者类作为arg?

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5655288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存