本问题已经有最佳答案,请猛点这里访问。
我正在python的某个类中编写一个函数,有人建议我在这个函数中添加一个
我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 | 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)) |
建议的改变:
1 2 3 4 | @classmethod def _randomize(cls, random_chars=3): return ''.join(random.choice(cls.RANDOM_CHOICE) for _ in range(random_chars)) |
我几乎总是只使用
我的问题是:向
如果您看到
1 2 3 4 5 6 7 8 9 10 11 | 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)) |
这意味着,您的方法可以不作为实例方法而存在,并且您可以直接在类上调用它。
1 | Randomize._randomize() |
现在,问题来了,它有什么好处吗?
我想是的,你不需要创建一个实例来使用这个方法,它会有开销。
1 2 | ran = Randomize() // Extra steps ran._randomize() |
您可以在这里阅读更多关于类和实例变量的信息。