Descriptors Python __get__ и __set__Python

Программы на Python
Ответить
Anonymous
 Descriptors Python __get__ и __set__

Сообщение Anonymous »

Я уверен, что это будет помечено как дубликат, но я действительно не понимаю, на что смотрю. Я проверил документацию Python по дескрипторам, но я уже две недели «программировал» в Python, и я не знаю, что ищу! < /P>
Это Что у меня есть: < /p>

Код: Выделить всё

>>> class Blub(object):
...     def __init__(self, value):
...             print('Blub is ' + value)
...             self.value = value
...     def __get__(self):
...             print('Blub gets ' + self.value)
...             return self.value
...     def __set__(self, value):
...             print('Blub becomes ' + value)
...             self.value = value
...
>>> class Quish(object):
...     def __init__(self, value):
...             self.blub = Blub(value)
...     def __get__(self):
...             return self.blub
...     def __set__(self, value):
...             self.blub = Blub(value)
...
< /code>
Это то, что я хочу, и не знаю, как сделать: < /p>
>>> a = Quish('One')
Blub is One
>>> a.blub
Blub gets One
'One'
a.blub = 'Two'
Blub becomes Two
Что мне делать в Blub или Quish, чтобы это произошло. У меня здесь очень простые классы, но есть гораздо более сложная версия, которая отлично работает, но только если я печатаю:

Код: Выделить всё

>>> a.blub.__get__()
Я думал, что цель этих дескрипторов состоит в том, чтобы сделать ненужным написание get() и set(). Как мне заставить его вести себя так, как мне хотелось бы, или Python не может этого сделать?

Подробнее здесь: https://stackoverflow.com/questions/198 ... et-and-set
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»