我正在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
)中的任何状态,这使其更加清晰明了。同时也意味着你可以在不创建实例的情况下对类进行测试。 - jonrsharpefunctools.partial()
。也许。 - Markus Meskanen