Mam klasę o nazwie Serwer, którą można uruchomić i zatrzymać. Niektórych metod nie należy wywoływać, dopóki nie zostanie uruchomiony serwer, w którym to przypadku powinien zostać zgłoszony wyjątek NotConnectedException. Czy istnieje sposób wywołania metody przed każdą metodą w klasie i określenia, czy zmienna klasy _started ma wartość True?Sprawdź warunek przed wywołaniem metody
Próbowałem użyć dekoratora, ale funkcja dekoratora nie ma dostępu do zmiennej klasy. Starałem się zrobić coś takiego:
class Server(object):
_started = False
def started(self):
if(self._started == False):
raise NotConnectedException
@started
def doServerAction(self):
...
czy próbowałeś umieścić dekorator bezpośrednio w klasie? Nie pracowałem wystarczająco na dekoratorach, aby wiedzieć, jak dobrze by to działało, ale właśnie tam zacznę szukać – inspectorG4dget
jak ten [post] (http://stackoverflow.com/questions/2366713/can-a-python-decorator- z-an-instance-method-access-the-class) powiedział, że jeśli jest to python2.6 lub nowszy, istnieje sposób, aby twój dekorator mógł uzyskać dostęp do zmiennej klasy – xvatar
@ inspectorG4dget Tak, dekorator jest w klasie. – BlueVoid