python - 如何命名类变量

标签 python

对于类变量的命名方式是否有约定(与实例变量不同),或者没有真正的区别。例如:

import pymysql

class DB:
    NUM_CONNECTIONS = 0
    def __init__(self):
        self.conn = None
        self.cursor = None
    def __repr__(self):
        return 'Closed connection' if not self.conn else f'Open conection @ 0x{id(self):x}'
    def connect(self):
        if self.conn: return
        self.conn = pymysql.connect(host='127.0.0.1',user='root')
        self.cursor = self.conn.cursor()
        DB.NUM_CONNECTIONS += 1

目前我通常把变量做成CLASS_VARIABLESinstance_variables。这有哪些常见模式?

最佳答案

让我们检查一下 pylint 对类变量名的看法。考虑以下代码示例:

# top-level constants for comparison
lowercase_var = 0
UPPERCASE_VAR = 1
CamelCaseVar = 2

def func():
    # function local variables
    lowercase_var2 = 0
    UPPERCASE_VAR2 = 1
    CamelCaseVar2 = 2


class ClassName:
    # class variables
    lowercase_var3 = 0
    UPPERCASE_VAR3 = 1
    CamelCaseVar3 = 2

pylint 的输出:

D:\tmp>pylint test.py
************* Module test
test.py:1:0: C0103: Constant name "lowercase_var" doesn't conform to UPPER_CASE naming style (invalid-name)
test.py:3:0: C0103: Constant name "CamelCaseVar" doesn't conform to UPPER_CASE naming style (invalid-name)
test.py:8:4: C0103: Variable name "UPPERCASE_VAR2" doesn't conform to snake_case naming style (invalid-name)
test.py:9:4: C0103: Variable name "CamelCaseVar2" doesn't conform to snake_case naming style (invalid-name)
test.py:7:4: W0612: Unused variable 'lowercase_var2' (unused-variable)
test.py:8:4: W0612: Unused variable 'UPPERCASE_VAR2' (unused-variable)
test.py:9:4: W0612: Unused variable 'CamelCaseVar2' (unused-variable)
test.py:12:0: R0903: Too few public methods (0/2) (too-few-public-methods)

------------------------------------------------------------------
Your code has been rated at 2.73/10 (previous run: 1.82/10, +0.91)

观察:

  1. 没有关于三个类变量名中任何一个的警告。这三个都完全有效。
  2. 大写名称通常用于顶级常量。可以对类变量使用大写命名约定,使它们看起来像一个常量值。如果您要修改 DB.NUM_CONNECTIONS += 1 之类的变量,最好选择另一种命名风格。
  3. snake_case 命名风格用于函数局部变量名和函数名,CamelCase 仅用于类名。 类变量是一个变量,它不是一个类(但属于一个类)。所以看起来还是选择snake_case比较好。

最后两个观察是自以为是的,你可以不同意并做出自己的选择。好消息:您可以从三个选项中选择一个。

关于python - 如何命名类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58384436/

相关文章:

python - 无法从 JSON 反序列化 PyMongo ObjectId

Python 将 Excel 文件(xls 或 xlsx)与 ODS 相互转换

python - python 的 random.Random.seed 是如何工作的?

python - 使用 Python 匹配和枚举测验结果的直接方法是什么

python - 错误 openerp.addons.website.models.ir_http : 500 Internal Server Error: after logout from odoo

python - 将 1D 函数扩展到 3 个维度以进行数据窗口

python - 如何使用cv2.VideoCapture接收Tello udp流

python - 一年中给定月份的 Pandas 日期范围

python - IBM Cloud 功能 - 无法创建操作

python - selenium webdriver 不使用自定义首选项打开 firefox