所以我最近发现了为什么Python中的静态方法如此有用。
在编写一些代码并检查一些现有代码时,我忍不住将许多(或实际上全部)函数更改为静态,因为可以轻松地从类外部调用函数,而不必真正“初始化'类。
当然,这意味着更改代码的结构,以便我不在静态函数中引用“self”,而是仅将参数作为函数的参数传递。
例如,之前我有类似的东西:
def pot_size(self, pre_flop=False):
# Need something different _1_pre_flop because there is nothing in the screenshot _1_pre_flop
if pre_flop:
sum_of_action_behind_me = 0
for pos in self.action_so_far_f:
try:
sum_of_action_behind_me += float(self.action_so_far_f[pos])
except:
pass
return sum_of_action_behind_me
所以在上面我将函数更改为静态,并在调用函数时将'action_so_far_f'直接传递到函数中,所以我不需要'self'。
我真的很想知道为什么我们会使用非静态方法...我确信我在这里遗漏了一些大东西,但在互联网上查找我找不到它是什么。
Python 中使用非静态方法(实例方法)有几个原因:
1.实例变量的访问: 实例方法可以通过 self 参数访问类的实例变量。这允许他们修改对象的状态。如果您的方法需要与对象的状态交互或修改对象的状态,那么使用实例方法是有意义的。
2.继承与多态: 实例方法在继承和多态性中起着至关重要的作用。它们允许子类覆盖其超类的方法,从而能够使用多态性。静态方法不以同样的方式参与多态性。
3.隐式方法绑定: Python 中的实例方法绑定到类的实例。这意味着您不必在调用方法时显式传递实例;它是自动完成的。