Можно ли украсить функцию/метод __get__ Метод?Python

Программы на Python
Ответить
Anonymous
 Можно ли украсить функцию/метод __get__ Метод?

Сообщение Anonymous »

Я пытаюсь понять, как методы работают как дескрипторы.

Там написано что-то вроде: это:

Для поддержки вызовов методов функции включают метод __get__() для привязки методов во время доступа к атрибутам. Это означает, что все функции не являются дескрипторами данных и возвращают связанные методы при вызове из объекта.

На основании этого описания и того факта, что " Точечный доступ из класса вызывает __get__()" Я предполагал, что можно украсить __get__ метода класса.

Я пытаюсь обернуть someFunction.__get__:

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

def wrap(func):
def wrapped(*args, **kwargs):
print("Wrapping...")
return func(*args, **kwargs)
return wrapped

class SomeClass():
def someFunction(self):
print("someFunction called")
someFunction.__get__ = wrap(someFunction.__get__)

obj = SomeClass()
obj.someFunction()
Вывод — это просто «вызов someFunction», как будто ничего не менялось.

Итак, мой вопрос: почему журнал Wrapping... не печатается?
Выполняется ли назначение:

someFunction.__get__ = wrap(someFunction.__get__)
< /code>

Что -нибудь? < /p>

Подробнее здесь: https://stackoverflow.com/questions/615 ... get-method
Ответить

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

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

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

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

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