2010-04-20 27 views

Répondre

53

Le déplacer vers une fonction est commun, s'il ne touche pas du tout la classe.

Si elle manipule les attributs de classe, utilisez le classmethod décorateur:

@classmethod 
def spam(cls, ...): 
    # cls is the class, you can use it to get class attributes 

classmethod et staticmethod (ce qui est le même que l'ancien, sauf que la méthode ne soit pas une référence à la classe de sa première paramètre) ont été introduits assez récemment. Cela signifie que certains programmeurs Python sont utilisés pour éviter les méthodes statiques et de classe.

Certains programmeurs Python vous diront que ces décorateurs ne font que compliquer les choses; D'autres personnes (généralement d'anciens programmeurs C# ou Java) vous diront que l'utilisation d'une fonction n'est pas assez orientée objet. Je pense que c'est juste une question de préférence.

+4

Je pense que '' @ staticmethod'' est plus approprié ici que '' @ classmethod'', car il ne manipule apparemment aucune propriété ou état de classe. – mcepl

+0

Les programmeurs Java utilisent également des méthodes statiques –