Here's something to start the fight ;-) ...
- What would you do with class methods that you cannot do with e.g. globals and functions ?
I will write up a concrete example I have and post it later.
Look into the motivation for the Prototype Pattern in the GOF book, or even better in the discussion of this pattern in the 'Design Pattern Smalltalk Companion' book.
This pattern is not needed if classes are 'first class' objects.
- How would you determine which methods are class-only methods and which are one usable by instances ?
This is one of the issues which has to be resolved. I have no proposal at the moment. (Maybe function attributes can help here?)
- If you don't like globals (see 1), wouldn't it be possible to store the state you want to manipulate using class methods in some other context object ?
I want the class methods (for example) to create and manipulate this 'context object'. This object, however, belongs into the class...
What I want to avoid is
class X(...): .... initialize(X)
My impression is that class methods are not really needed and would only make optimizing Python harder... but that's maybe just me ;-)
Unfortunately not, I fear.