``staticmethod`` and ``classmethod`` must be implemented as first class functions. If the decorator is a ``class`` then you must call it. The reason for using a class vs. a function is that I needed to be able to pass values to the decorator, and the decorator needs to track its own state (e.g., ``priority``). If I remember, you cannot pass values to a decorator that is defined as a function.