I like the way you're handling self and cls. One thing to note here is that any method that contains a self. is an instance method, any method that contains a cls. is a class method if it doesn't contain a self. as well. If it contains neither, it's a static method. Both the classmethod and staticmethod functions go away.
Another minor point here is that allowing both self. and cls. in the same method gives you access to the class object without any special syntax.
I don't know... I'd consider that much too magical and opaque. »Explicit is better than implicit«, right?