@staticmethod 的优点和缺点
Pros and cons of @staticmethod
如果我有一些(而且只有一个)class,A,在我的文件中有一些基本方法,
class A(B):
def some_overrided_method()
return {'output': True}
以下哪个更好用?
里面的静态方法class
class A(B):
def some_overrided_method(self)
return {'output': self.do_smth()}
@staticmethod
def do_smth(self):
return True
函数外class
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()}
如果它对 class/instance 没有任何作用,那么作为 class 的方法就没有意义了。
使用普通函数即可。
静态方法很少有用。
我能想到的使用静态方法的唯一原因是如果函数在 class 之外使用没有意义。
如果我有一些(而且只有一个)class,A,在我的文件中有一些基本方法,
class A(B):
def some_overrided_method()
return {'output': True}
以下哪个更好用?
里面的静态方法class
class A(B): def some_overrided_method(self) return {'output': self.do_smth()} @staticmethod def do_smth(self): return True
函数外class
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()}
如果它对 class/instance 没有任何作用,那么作为 class 的方法就没有意义了。
使用普通函数即可。
静态方法很少有用。
我能想到的使用静态方法的唯一原因是如果函数在 class 之外使用没有意义。