Mam obsługi życzenie i dekorator, chciałbym pracować z przedmiotem samodzielnego wewnątrz dekoratoraDostęp argumenty funkcji od dekoratora
class MyHandler(webapp.RequestHandler):
@myDecorator
def get(self):
#code
UPDATE: Proszę zauważyć różnicę między pierwszym a drugim ja
class myDecorator(object):
def __init__(self, f):
self.f = f
def __call__(self):
#work with self
MyHandler
>get
(funkcja)>self
(argumentu)myDecorator
>__call__
(funkcja)>self
(argumentu)
argumenty własny wymienione powyżej są różne. Moją intencją jest uzyskanie dostępu do pierwszego siebie z poziomu funkcji __call__
lub znalezienie sposobu na zrobienie czegoś podobnego.
Witam mogę uzyskać dostęp do argumentu MyHandlers z funkcji get wewnątrz dekoratora?
Update2: Chcę zaimplementować dekorator do pracy z niestandardowego logowania w Google App Engine:
Mam klasy (requestHandler):
class SomeHandler(webapp.RequestHandler):
@only_registered_users
def get(self):
#do stuff here
I chcę do dekoracji dostać funkcji w celu sprawdzenia, czy użytkownik jest zalogowany czy nie:
from util.sessions import Session
import logging
class only_registered_users(object):
def __init__(self, f):
self.f = f
def __call__(self):
def decorated_get(self):
logging.debug("request object:", self.request)
session = Session()
if hasattr(session, 'user_key'):
return self.f(self)
else:
self.request.redirect("/login")
return decorated_get
wiem, czy stosowanie r jest zalogowany, jeśli ma właściwość 'user_key' w obiekcie sesji.
To główny cel jestem zainteresowany w tym konkretnym przypadku
Daj mi znać swoje sugestie/opinie jeśli robię coś złego!
Dzięki!
Również oddanie „Google App Engine” przed pytaniem, które jest tylko o dekoratorów może uczynią Twoje pytanie dostać mniej widoki. Ogólne przedmioty są często oglądane, pytania o określone platformy są oglądane i wolniej odpowiedział. – marr75
Poprawione, dziękuję @ marr75 –
Nie ma problemu, jeśli twoje pytanie zostanie wyświetlone więcej, moja odpowiedź może uzyskać więcej głosów. To wygrana. – marr75