如何命名类变量

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


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_VARIABLES和instance_variables。有哪些常见的模式?


炎炎设计
浏览 158回答 2
2回答

慕斯王

让我们检查一下 pylint 对类变量名称的看法。考虑以下代码示例:# top-level constants for comparisonlowercase_var = 0UPPERCASE_VAR = 1CamelCaseVar = 2def func():    # function local variables    lowercase_var2 = 0    UPPERCASE_VAR2 = 1    CamelCaseVar2 = 2class ClassName:    # class variables    lowercase_var3 = 0    UPPERCASE_VAR3 = 1    CamelCaseVar3 = 2pylint 的输出:D:\tmp>pylint test.py************* Module testtest.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)观察:没有关于三个类变量名称中的任何一个的警告。这三个都是完全有效的。大写名称通常用于顶级常量。可以对类变量使用大写命名约定,使它们看起来像一个常量值。如果您正在修改变量DB.NUM_CONNECTIONS += 1,最好选择另一种命名样式。snake_case 命名风格用于函数局部变量名和函数名,CamelCase 仅用于类名。类变量是一个变量,它不是一个类(而是属于一个类)。所以看起来最好选择snake_case。最后两个意见是固执己见的,您可以不同意并做出自己的选择。好消息:您可以从三个选项中选择任何一个。

一只甜甜圈

您应该遵循 PEP8,但通常根据我的经验,公司/个人开发人员要么坚持使用驼峰式或蛇式,以进行打字约定。Camel case 是一种类型书写,它将变量名的第二个单词大写,即:myPhoneBook,而不是蛇形大小写,它使用下划线分隔变量名中的单词,即:my_phone_book找到一个适合你的,并坚持下去是个好主意。全部大写的变量名通常是为环境变量保留的。除此之外,不要使用关键字作为变量名。很多时候,人们会使用“list”作为变量名,这是非常危险的,因为“list”是Python原生提供的关键字。使用关键字作为变量意味着您正在有效地替换该关键字。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python