python - poo - ¿Por qué siempre agregar uno mismo como primer argumento a los métodos de clase?
llamar metodos de una clase python (2)
Guido lo explicó here . Básicamente, los métodos son funciones, y las funciones no deben aceptar ningún parámetro "oculto", de lo contrario, las instalaciones de orden superior, como los decoradores, no podrán tratarlos de manera sensata.
Posible duplicado:
¿Por qué necesita explícitamente tener el argumento "self" en un método de Python?
Entiendo por qué el yo es siempre el primer argumento para los métodos de clase, esto tiene mucho sentido, pero si es así, entonces, ¿por qué pasar por la molestia de escribir si para cada definición de método? ¿Por qué no hacerlo algo que se hace automáticamente entre bastidores?
¿Es por claridad o hay una situación en la que no querrás pasar a ti mismo como el primer argumento?
Porque explícito es mejor que implícito. Al hacer que el parámetro sea un requisito explícito, simplifica la comprensión del código, la introspección y la manipulación. Se ha ampliado aún más en las preguntas frecuentes de Python .
Además, puede definir métodos de clase (tome una clase en lugar de una instancia como primer argumento), y puede definir métodos estáticos (no tome ningún argumento ''primero''):
class Foo(object):
def aninstancemethod(self):
pass
@classmethod
def aclassmethod(cls):
pass
@staticmethod
def astaticmethod():
pass