【发布时间】:2015-02-09 04:58:54
【问题描述】:
我的数据描述符适用于具有__set__ 和__get__ 的对象。
然而,类描述符似乎不支持__set__。这样做会用分配的值替换描述符对象本身。
以下代码演示了这一点
from __future__ import print_function
class Descriptor(object):
def __get__(self, obj, cls):
print('__get__')
def __set__(self, obj, value):
print('__set__')
class Class(object):
descriptor = Descriptor()
print('Object')
a = Class()
a.descriptor
a.descriptor = 1
print('Class')
Class.descriptor
Class.descriptor = 2
哪些输出
Object
__get__
__set__
Class
__get__
如您所见,类级别 __set__ 没有被调用。
是否有一些解决方法或破解(无论多么可怕)允许在类上使用 __set__ 数据描述符?
为了清楚起见,我不希望调用代码必须实现任何“hack”。我希望调用代码按上述预期工作,但任何 hack 都在“幕后”。
使用 Python 2.7
【问题讨论】:
标签: python python-2.7 methods descriptor