J'écris une fonction dans une classe en python, et les gens m'ont suggéré d'ajouter à cette fonction un décorateur @classmethod
.Pourquoi devrais-je utiliser un classmethod en python?
Mon code:
import random
class Randomize:
RANDOM_CHOICE = 'abcdefg'
def __init__(self, chars_num):
self.chars_num = chars_num
def _randomize(self, random_chars=3):
return ''.join(random.choice(self.RANDOM_CHOICE)
for _ in range(random_chars))
La modification proposée:
@classmethod
def _randomize(cls, random_chars=3):
return ''.join(random.choice(cls.RANDOM_CHOICE)
for _ in range(random_chars))
J'utilise presque toujours que la fonction _randomize
.
Ma question est: Quels sont les avantages d'ajouter à une fonction le décorateur classmethod
?
Il est plus clair que la méthode n'utilise aucun état de l'instance, généralement appelé 'self'. Cela signifie également que vous pouvez le tester sur la classe sans créer d'instance. – jonrsharpe
Aussi, si cette classe ne contient pas beaucoup d'autres, il est probablement préférable d'utiliser une fonction et 'functools.partial()'. Peut être. –