1
我正在寫一些Python中的函數,人們建議我添加一個@classmethod
裝飾器。爲什麼要在python中使用classmethod?
我的代碼:
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))
建議的更改:
@classmethod
def _randomize(cls, random_chars=3):
return ''.join(random.choice(cls.RANDOM_CHOICE)
for _ in range(random_chars))
我幾乎總是隻使用_randomize
功能。
我的問題是:添加到一個函數classmethod
修飾器有什麼好處?
它更清楚地表明該方法不使用實例中的任何狀態,通常命名爲「self」。此外,它意味着您可以在課堂上測試它,而無需創建實例。 – jonrsharpe
另外,如果這個類不包含其他內容,那麼最好使用一個函數和'functools.partial()'。也許。 –