Уведомления

Группа в Telegram: @pythonsu

#1 Июль 4, 2009 07:25:16

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

про декораторы

Блин. Вот в этом-то и проблема, что понимать – понимаю, а чёткую цель поставить не могу. Но красиво нереально! Попробую что-нить близкое для Qt нахимичить… :-)



Офлайн

#2 Дек. 25, 2010 21:43:38

Fibio
От:
Зарегистрирован: 2010-09-14
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

про декораторы

Здравствуйте, подскажите как получить доступ к атрибутам декорируемой функции?
К примеру есть функция:
def aa(a):
a = a * 2
return a

Необходимо чтобы вначале была проверка значения а, например не равно ли оно 0:
def prov(func):
def prov1(*args, **kwargs):
b = func(*args, **kwargs)
if b == 0:
print ‘a is zero’
return func(*args, **kwargs)
return prov1
Это учебный так сказать пример, но тут одно но: “b = func(*args, **kwargs)” - и присваевается не аргумет функции аа, а ее результат, проверка работает только потому, что 0*2 = 0, таким образом если я, например, сделаю проверку для а=1
def prov(func):
def prov1(*args, **kwargs):
b = func(*args, **kwargs)
if b == 1:
print ‘a is one’
return func(*args, **kwargs)
return prov1
- не сработает

Заранее спс



Офлайн

#3 Дек. 25, 2010 22:09:00

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

про декораторы

Fibio
Не надо поднимать старые темы! Один вопрос – одна тема.



Офлайн

#4 Дек. 25, 2010 22:22:12

Fibio
От:
Зарегистрирован: 2010-09-14
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

про декораторы

Сорри по декораторам нашла еще одну темку, но там ответа на мой вопрос не выявила, Там общие примеры, которые встречаются в инете, я все их прочла. Поэтому подняла старую, чтоб новую не создавать



Офлайн

#5 Дек. 25, 2010 22:25:18

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

про декораторы

Так в том то и дело, что не надо поднимать старые темы и задавать в них свои новые вопросы. Создайте новую тему со своим вопросом и осмысленным заголовком.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version