gpt4 book ai didi

python - Python 描述符的 __set__ 可以用 instance = None 调用吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:00 25 4
gpt4 key购买 nike

假设我有这个 Python descriptor :

class MyDesc(object):
def __get__(self, instance, instance_type=None):
return 'Blue berries'
def __set__(self, instance, value):
print 'called with', instance, value

class MyClass(object):
desc = MyDesc()

在正常运行的情况下,有没有一种方法可以让 __set__ 调用 None 作为实例参数?我的意思是不做类似的事情

MyClass.__dict__['desc'].__set__(None, 'ants bees cats')

这些似乎并没有做到这一点:

MyClass.desc = 'blah'
setattr(MyClass, 'desc', 'blah')

我问的原因是我看到一些 defensive coding in Django为了避免这种情况,我在质疑是否有必要。

最佳答案

我认为你质疑这个测试是正确的,我也找不到在这段代码中让 instance 成为 None 的方法。文档似乎也清楚地表明 instance 永远不能是 None:

object.__set__(self, instance, value)

Called to set the attribute on an instance instance of the owner class to a new value, value.

我的猜测是 instance__get__ 中检查了 None a good reason ,并且相同的测试完全是模仿而在 __set__ 中结束。

关于python - Python 描述符的 __set__ 可以用 instance = None 调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16412672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com