Cómo manejar el mensaje pylint: Advertencia: El método podría ser una función
Pregunta
Tengo una clase Python y pylint RAN en contra de ella. Un mensaje que dio fue:
Warning: Method could be a function
Es esto me dice que sería mejor mover este método fuera de la clase, ya que no utiliza ninguna variable de instancia?
En C # Me haría esto un método estático. ¿Cuál es la cosa más Pythonic a hacer aquí?
Solución
Si lo mueve a una función es común, si no toca la clase en absoluto.
Si se manipula atributos de clase, utilice el decorador classmethod
:
@classmethod
def spam(cls, ...):
# cls is the class, you can use it to get class attributes
classmethod
y staticmethod
(que es el mismo que el anterior, excepto que el método no obtiene una referencia a la clase de su primer parámetro) se han introducido recientemente.
Esto significa que algunos programadores de Python se usan para los métodos estáticos y de clase evitar.
Algunos programadores de Python incondicionales le dirá que estas cosas se complican decoradores; algunas otras personas (por lo general ex C # o programadores de Java) le dirá que el uso de una función no es lo suficientemente orientado a objetos. Creo que es sólo una cuestión de preferencia.