谁可以调用__get __,__ set__和__del__?

时间:2009-12-23 08:35:23

标签: python descriptor

这是我的代码。我不知道为什么它不起作用。

class a:
    def __get__(self):
        return 'xxx'
    def aa(self):
        print 'aaaa'

b=a()
print b.get('aa')

请尝试用代码回答,因为我的英语不是很好。谢谢。

class HideX(object):
    def __init__(self, x):
        self.x = x

    def get_x(self):
        return self.__x

    def set_x(self, x):
        self.__x = x+10

    x = property(get_x, set_x)

inst = HideX(20)
print inst.x
inst.x = 30
print inst.x

2 个答案:

答案 0 :(得分:1)

我认为在尝试使用它们之前,您应该在Descriptors上阅读更多内容。

答案 1 :(得分:1)

您正在调用obj.get,但class A中没有get函数,因此出错, 将__get__重命名为get,或者如果您偶然尝试使用描述符,请执行以下操作

class A(object):
    def __get__(self, obj, klass):
        print "__get__", obj, klass
        return 'xxx'

class X(object):
    a = A()

x=X()
print x.a