【问题标题】:How often to use static methods in Python在 Python 中使用静态方法的频率
【发布时间】:2015-07-04 14:02:40
【问题描述】:

我是一名高级程序员,最近开始使用和学习 python。我最近遇到了this 的问题。该问题的答案表明,与其在类中使用静态方法,不如只使用方法而不使用类被认为是更好的设计。

代码设计一:

gameResolution.py

width = 300
height = 300
# other variables, and functions following...

screenResolution.py

width = 1920
height = 1080
# other variables and functions following...

代码设计2:

分辨率.py

class GameResolution:
    width = 300
    height = 300
    # static functions following

class ScreenResolution:
    width = 1920
    height = 1080
    # static functions following

您可能会看到,代码设计 2 在这种情况下(在我看来)更有意义。我可以将与该实体相关的任何内容(例如 GameResolution 或 ScreenResolution)打包到一个类中,并将所有这些类打包到一个 resolution.py 文件中。

如果我遵循 代码设计 1,我最终会得到许多微小的 .py 文件,每个文件都代表一个非常小的类。对吗?

那么,静态方法对 python 来说真的是一种不好的方法吗?在这种情况下,你会怎么做?

【问题讨论】:

  • 最好将widthheight 设为对象属性,并将方法设为非静态。然后你可以创建多个GameResolutions等。
  • @bereal 正如我对# other variables, and functions following... 所暗示的那样,可能有更多不匹配的变量,因此创建Resolution 类实际上是不可能的。但是,由于它们确实具有一些共同的功能,因此在我看来,将它们保存在一个公共文件 resolution.py 中是有意义的,而不是制作一个很小的 ​​.py 文件
  • 如果你以 OO 方式设计整个东西,我看不出有其他变量和函数是如何无法匹配的。
  • 如果你的课程真的是一次性的,并且你不知道如何将这个类概括为可用的更多,那么使用一个类就不是pythonic。你当然可以随心所欲,我不确定它是否会对性能造成任何影响,或者你会遇到任何特殊问题,但其他 python 程序员会特别喜欢这段代码。

标签: python code-structure


【解决方案1】:

最好的解决方案取决于你的风格。话虽如此,我不认为将类作为单一用途的静态类是要走的路。我会执行以下操作之一:

  1. 创建一个处理所有分辨率的类(GameResolution/ScreenResolution/等),并为每个类创建单独的实例。
  2. widthheight的名称更改为game_widthgame_heightscreen_widthscreen_height

至于当我使用静态方法时,唯一的一次是出于某种原因以不同于初始化程序的方式创建对象。不过,这样做的必要性相当罕见。听起来您的用例肯定更适合用一个类来表示所有内容,或者如果它们足够不同,那么全局和函数而不是类和静态方法。

【讨论】:

  • 这很有帮助,非常感谢。 2 个“分辨率”类足够不同,所以我不能只制作一个普通的Resolution 类。所以我的决议例子是一个非常糟糕的例子。然而,正如你所说的 globals and functions instead of classes and static methods 似乎每个人都在使用,你也说这是要走的路,所以它必须是
猜你喜欢
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 2022-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多