繁体   English   中英

当变量应该设置为私有类变量(例如_var)vs类常量(例如VAR)vs私有类常量(例如_VAR)?

[英]When a variable should be set as a private class variable (e.g. _var) vs a class constant (e.g. VAR) vs a private class constant (e.g. _VAR)?

我发现自己不确定是否应该将我在我的类中使用的某些变量设置为私有类变量(例如_var)vs类常量变量(例如VAR)与私有类常量变量(如果使用这样的东西)(例如_VAR)。 我意识到除了惯例之外,这在Python中并不重要,但想知道哪种方式是正确的(或更正确)。

例如,假设我有一个用于存储高度的正则表达式模式的变量。 假设我无意在类中或代码中的其他地方修改它,实际上我只在其中一个类方法中使用它,我应该使用它:

选项1 - 设置为私有类变量:

_height_pattern = r"""(#'##?"?)|#'"""

选项2 - 设置为常量类变量

HEIGHT_PATTERN = r"""(#'##?"?)|#'"""

选项3 - 设置为常量私有类变量(不确定是否存在这样的东西,或者我是否曾经看过为此声明的变量)

_HEIGHT_PATTERN = r"""(#'##?"?)|#'"""

或者也许是其他一些我没有想过的选择。 请注意,在这种情况下,我选择了一个变量,我认为人们可以通过这种方式或其他方式做出好的结果。 但是,还有其他情况我觉得它更模糊。 例如,如果我有一个随机种子变量(_SEED = 2000?),其变化对功能没有根本影响怎么办? 因此,如果您可以分享一些易于遵循的经验法则,那也值得赞赏。

事实上我只在其中一个类方法中使用它

那么毫无疑问,这根本不应该是一个类变量。 我会在方法中声明它作为常量。

但是,我知道你的问题比你给出的这个例子更广泛,所以让我们假设你所说的这个变量将被用在多个方法中。 在这种情况下,因为我也从未见过像选项3那样的东西(而且它很丑陋),你应该使用选项2,因为更重要的是你的代码说这个变量被修改而不是告诉它不应该在课外访问。

根据pep-0008常量应该全部为captialized并在需要时使用下划线。 示例HEIGHT_PATTERN

作为更一般的注释,python的编码“风格”可以在第8页找到(参见上面的链接)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM