Come da titolo, non ho ben capito la differenza tra metodi di classe e metodi statici.
I primi sono simili ai metodi di istanza, ma hanno diverse differenze: i metodi di istanza vengono invocati su una determinata istanza (o passando l'istanza come parametro), fanno uso della parola chiave self e producono un risultato diverso a seconda dell'istanza su cui vengono invocati.
I metodi di classe si riferiscono alla classe, quindi valgono per tutte le istanze generate da quella classe, fanno uso della parola chiave cls e per poterli creare, hanno bisogno del decoratore @classmethod.
A vederli così mi ricordano molto i metodi statici in Java, ma Python dispone proprio di metodi statici diversi dai metodi di classe: non fanno uso di parole chiavi (quindi possono essere definiti anche senza parametri) e necessitano del decoratore @staticmethod.
Tuttavia, a me sembra che facciano la stessa cosa e non capisco bene la differenza trai due che appare essere limitata al solo fatto che i metodi di classe anno un riferimento alla propria classe rispetto ai metodi statici. E' possibile che quest'ultimi siano solo metodi di classe "più semplice"?