@staticmethod的利弊

时间:2015-02-26 10:54:47

标签: python class static-methods

如果我的文件中有一些(只有一个)A,有一些基本方法,

class A(B):
    def some_overrided_method()
        return {'output': True}

以下哪项更适合使用?

  • 类中的静态方法

    class A(B):
       def some_overrided_method(self)
           return {'output': self.do_smth()}
    
       @staticmethod
       def do_smth(self):
           return True
    
  • 课外的功能

    def do_smth():
       return True
    
    class A(B):
       def some_overrided_method(self)
           return {'output': do_smth()}
    
  • 中的一些嵌套方法
    class A(B):
       def some_overrided_method(self)
            def do_smth():
                return True
           return {'output': do_smth()}
    

1 个答案:

答案 0 :(得分:2)

如果它没有对类/实例做任何事情,那么它就没有必要成为类的方法。

只需使用正常功能 静态方法很少有用。

我能想到使用静态方法的唯一原因是,如果函数在类外使用是没有意义的。