1

データ記述子をテストするためのこのコードがあります

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 

それを実行すると、printステートメントしか表示されませんが、get関数で引退した実際の値は表示されません

私の出力はこれだけです

__get__ in Data descriptor
4

2 に答える 2

1

戻り値を出力しませんでした。だから、あなたはそれを見ませんでした。

あなたがする必要があります: -

print cobj.dd 
于 2013-02-11T07:19:58.467 に答える
0

このような意味ですか?

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

記述子ハウツーガイドを参照してください

于 2013-02-11T07:24:51.210 に答える