Python:不鼓励使用静态变量吗?

2024-10-02 02:41:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在阅读关于静态变量(即类变量)、静态方法、类方法以及所有这些的细微差别。在C++语言中,static variables are generally strongly discouraged because of many IMO compelling reasons。我只是好奇,Python社区对于不鼓励使用静态变量是否有已知的立场。The Google Python Style Guide does not seem to have a pro/con position on static variables。在

在Python语言中,是否不鼓励使用静态变量(例如,有不好的代码气味)?

<>谷歌C++风格指南的声明“[静态变量]导致很难找到bug”,这似乎不仅对C++语言,而且对Python语言都是正确的。在


Tags: of方法语言静态staticvariablesaremany
2条回答

在某些语言中,如Java,静态变量可能会导致可测试性问题,因为它们不容易被模拟出来。在Python中并不是这样。在

但是,静态变量和类变量的好处较少,因为当您拥有不需要访问特定实例的成员的值或函数时,您只需在模块级定义它们,并在不引用Java等语言中不可用的类a奢侈品的情况下使用它们。在

{cd1>中的气味并不是这样说的。但是如果你有一半的变量是static,那么我会问一些关于你对OO设计的理解的问题。在

<>你所阅读的C++资源是用static storage duration来讨论类类型的变量。它们与静态变量不同;例如,以下变量也具有静态存储持续时间:

Example x;

namespace whatever {
    Example y;
}

void foo() {
    static Example z;
}
<>这些在C++中是危险的,因为它们被初始化和销毁的顺序是不可预测的和容易出错的。在


Python没有静态存储持续时间的变量。它甚至没有存储期限。它具有(模块)全局变量和静态变量,但它们的初始化顺序比C++更精确地定义。除非有循环导入,否则C++问题不太可能发生,即使这样,循环导入也是问题,而不是全局变量或静态变量。在


也就是说,可变的全局状态,例如在程序过程中发生变化的全局变量或静态变量,对language-independent reasons是不利的。这是C++与静态存储持续时间的问题完全不同的关注点。你不想改变的全局变量和静态变量通常都很好。在

相关问题 更多 >

    热门问题