我正在 python 的某个类中编写一个函数,人们建议我向这个函数添加一个@classmethod
装饰师。
My 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))
建议的更改:
@classmethod
def _randomize(cls, random_chars=3):
return ''.join(random.choice(cls.RANDOM_CHOICE)
for _ in range(random_chars))
我几乎总是只使用_randomize
功能。
我的问题是:向函数添加classmethod
装饰师?
如果你看到_randomize
方法,您没有在其中使用任何实例变量(在 init 中声明),但它正在使用一个类var
i.e. RANDOM_CHOICE = 'abcdefg'
.
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))
这意味着,您的方法可以不作为实例方法而存在,并且可以直接在类上调用它。
Randomize._randomize()
那么问题来了,它有什么优势吗?
您可以阅读有关类和实例变量的更多信息here https://stackoverflow.com/questions/2714573/instance-variables-vs-class-variables-in-python.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)