It's ugly, but since a decorator can return anything it's OK for it to return a class instead of a function:
def StateDecorator(fn):
class cls(State):
def __call__(self):
super().__call__()
fn(self)
return cls
@StateDecorator
def concreteState(self):
print("cc", self)
concreteState
<class '__main__.cls'>
Be aware that this could confuse any static analysis tools you're using.