Lors de l'intégration d'un Django app je n'ai pas utilisé avant, j'ai trouvé deux façons différentes utilisées pour définir les fonctions dans les classes. L'auteur semble utiliser à la fois très intentionnellement. Le premier est celui que j'utilise moi-même beaucoup de choses:
class Dummy(object):
def some_function(self,*args,**kwargs):
do something here
self is the class instance
L'autre est un je n'ai pas l'utilisation, principalement parce que je ne comprends pas quand l'utiliser, et ce pour:
class Dummy(object):
@classmethod
def some_function(cls,*args,**kwargs):
do something here
cls refers to what?
Dans le Python docs de l' classmethod
décorateur est expliqué avec cette phrase:
Une méthode de la classe reçoit la classe implicite premier argument, juste comme une méthode d'instance reçoit l'instance.
Donc je suppose cls
désigne Dummy
(les class
, pas l'instance). Je n'ai pas de comprendre exactement pourquoi cela existe, parce que je pouvais toujours faire ceci:
type(self).do_something_with_the_class
Est-ce juste par souci de clarté, ou ai-je raté la partie la plus importante: effrayant et fascinant des choses qui n'a pas pu être fait sans elle?