为了账号安全,请及时绑定邮箱和手机立即绑定

如何命名类变量

如何命名类变量

炎炎设计 2022-06-22 18:19:28
是否有关于如何命名类变量的约定(与实例变量不同),或者没有真正的区别。例如:import pymysqlclass 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。有哪些常见的模式?
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

让我们检查一下 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。

最后两个意见是固执己见的,您可以不同意并做出自己的选择。好消息:您可以从三个选项中选择任何一个。


查看完整回答
反对 回复 2022-06-22
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您应该遵循 PEP8,但通常根据我的经验,公司/个人开发人员要么坚持使用驼峰式或蛇式,以进行打字约定。

Camel case 是一种类型书写,它将变量名的第二个单词大写,即:myPhoneBook,而不是蛇形大小写,它使用下划线分隔变量名中的单词,即:my_phone_book

找到一个适合你的,并坚持下去是个好主意。

全部大写的变量名通常是为环境变量保留的。

除此之外,不要使用关键字作为变量名。很多时候,人们会使用“list”作为变量名,这是非常危险的,因为“list”是Python原生提供的关键字。使用关键字作为变量意味着您正在有效地替换该关键字。


查看完整回答
反对 回复 2022-06-22
  • 2 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信