gpt4 book ai didi

python:什么时候在类方法上使用静态方法?

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:43 25 4
gpt4 key购买 nike

根据我的阅读,类方法与静态方法在很大程度上相同,但有一些异常(exception),但具有提供类指针的优势。

因此,如果在类中定义非实例方法,是否真的有理由使用静态方法而不是类方法?

编辑:因为你们中的一些人很快将其视为与另一个问题的重复而忽略了。这不是关于类和静态方法之间区别的问题。相反,问题是在绝大多数情况下,当两者的功能重叠时,如何在两者之间做出选择。

编辑#2:我问的原因是我正在重构其他人的一些现有代码。具体来说,有些子类与父类共享相同的模块,我打算将它们移动到单独的模块中。当发生这种情况时,需要修复静态方法中对类外常量的引用。我可以通过以下方式之一完成 1.从父模块导入所有常量 2.将所有常量移至父类中,并将所有子静态方法更改为类方法 3. 添加“父类”。在每次引用常量之前

我个人想做#2,因为它避免了命名空间污染,这也是我问这个问题的原因。这主要是风格问题。希望这提供了足够的上下文。

最佳答案

几乎总是,实际上。您很少需要访问自动传递给类方法的类对象。 Python 类方法(不应与 Java 等语言中的类方法进行比较)主要用于提供备用构造函数。

具体来说,类方法看起来像

@classmethod
def my_class_method(cls, foo):
...

如果您从未真正在方法体中使用cls,您可能首先将其更改为

@staticmethod
def my_static_method(foo):
...

接下来,您可能会考虑 my_static_method 是否真的需要成为该类的一部分,以及它是否可以作为一个独立的函数。

如果您确实使用cls,那么显然它需要是一个类方法。

关于python:什么时候在类方法上使用静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29614907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com