Python数据描述符不起作用

时间:2013-02-11 07:16:45

标签: python

我有用于测试数据描述符的代码

class DataDescriptor(object):
    def __init__(self):
        self.value = 1990

    def __get__(self,obj,cls):
        print "__get__ in Data descriptor"
        return self.value

    def __set__(self,obj,value):
        self.obj = value
        print "__set__ in Non Data Descriptor"

    def __del__(self,obj):
        print "__del__ in Non Data Descriptor"
        del self.obj

class NonDataDescriptor(object):
    def __get__(self,obj,cls):
        print "__get__ in Non Data descriptor"


class C(object):
    dd = DataDescriptor()
    ndd =NonDataDescriptor()
    def __init__(self):
        self.__value = 1

cobj = C()
cobj.dd 

当我执行该操作时,我只能看到打印语句,但我无法看到我在获取函数中重新开始的实际值

我的输出只是

__get__ in Data descriptor

2 个答案:

答案 0 :(得分:1)

您没有打印返回值。所以,你没有看到它。

你需要这样做: -

print cobj.dd 

答案 1 :(得分:0)

你的意思是这样吗?

def __get__(self, obj, cls):
    print "__get__ in Data descriptor", self.value
    return self.value

请参阅Descriptor HowTo Guide