J'ai une classe python et j'ai exécuté pylint contre elle. Un message qu'il a donné était:
Warning: Method could be a function
Est-ce que cela me dit qu'il serait préférable de déplacer cette méthode hors de la classe car elle n'utilise aucune variable d'instance?
En C #, j'en ferais une méthode statique. Quelle est la chose la plus pythonique à faire ici?
Le déplacer vers une fonction est courant, s'il ne touche pas du tout la classe.
S'il manipule des attributs de classe, utilisez le décorateur classmethod
:
@classmethod
def spam(cls, ...):
# cls is the class, you can use it to get class attributes
classmethod
et staticmethod
(qui est la même que la première, sauf que la méthode n'obtient pas de référence à la classe à partir de son premier paramètre) ont été introduites assez récemment. Cela signifie que certains programmeurs Python sont utilisés pour éviter les méthodes statiques et de classe.
Certains hardcore Python vous diront que ces décorateurs compliquent les choses; d'autres personnes (généralement d'anciens programmeurs C # ou Java programmeurs) vous diront que l'utilisation d'une fonction n'est pas assez orienté objet. Je pense que c'est juste une question de préférence.