为什么我应该在python中使用classmethod?

这个问题在这里已经有了答案:

  • @classmethod和@staticmethod对初学者的意义? 12个答案
  • Python中的类方法是什么? 15个答案

  • 如果你看到_randomize方法,你没有使用任何实例变量(在init中声明),但它使用了一个类varRANDOM_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()
    

    现在问题出现了吗?它有什么优势?

  • 我想是的,你不必通过创建一个实例来使用这种方法,这将有一个开销。

    ran = Randomize() // Extra steps
    ran._randomize()   
    
  • 你可以在这里阅读关于类和实例变量的更多信息。

    链接地址: http://www.djcxy.com/p/54269.html

    上一篇: Why should I use a classmethod in python?

    下一篇: Whats the cost of calling a virtual function in a non