Кто может звонить __get__, __set__ и __del__? - PullRequest
0 голосов
/ 23 декабря 2009

Это мой код. Я не знаю, почему это не работает.

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 ]

1 голос
/ 23 декабря 2009

Вы звоните 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
1 голос
/ 23 декабря 2009

Я думаю, вам следует прочитать немного больше о дескрипторах , прежде чем пытаться их использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...