为什么我要在 Python 中使用非静态方法?

问题描述 投票:0回答:1

所以我最近发现了为什么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 static-methods
1个回答
0
投票

Python 中使用非静态方法(实例方法)有几个原因:

1.实例变量的访问: 实例方法可以通过 self 参数访问类的实例变量。这允许他们修改对象的状态。如果您的方法需要与对象的状态交互或修改对象的状态,那么使用实例方法是有意义的。

2.继承与多态: 实例方法在继承和多态性中起着至关重要的作用。它们允许子类覆盖其超类的方法,从而能够使用多态性。静态方法不以同样的方式参与多态性。

3.隐式方法绑定: Python 中的实例方法绑定到类的实例。这意味着您不必在调用方法时显式传递实例;它是自动完成的。

© www.soinside.com 2019 - 2024. All rights reserved.