如何制定pylint规则以允许以__开头的私有变量

问题描述

基本上我有一个带有私有变量的类:

class MyClass:
   def __init__(self,abAb):
      self.__abAb = abAb

现在,皮林特抱怨道:

Attribute name "__abAb" doesn't conform to camelCase naming style

Python并不真正了解私有变量,但据我所知,可以通过在两个下划线前加前缀来实现。但是,现在我有一个问题,就是pylint抱怨,并且我还没有找到禁用该消息的好方法,而:

  • 我不想在每次出现时都禁止显示该消息。
  • 我在.pylintrc中指定了正则表达式以允许使用下划线,但是不可能非常严格地强制执行camelCase。
  • 我通常不想禁用名称检查。

还有另一种方式允许这样的名称吗?类似于pylint规则“ __ camelCase ”,我可以将其应用于class-attributes吗?还是另一种“内置” pythonic方式?

实际上,在更改为snake_case命名约定后,pylint不再抱怨:

class MyClass:
   def __init__(self,ab_ab):
      self.__ab_ab = ab_ab

有点奇怪,但这就是我想要的。因此,我将使用snake_case命名属性方法

编辑:从camelCase更改为snake_case实际上解决了pylint的问题。

解决方法

除常量外,下划线不是驼峰式的一部分,因此没有很好的内置方法来实现。话虽如此,您可以将.pylintrc添加到__[a-z]+[A-Z0-9]+中,并添加import numpy as np # OPTIMIZATION random_list = np.random.randint num_1 = random_list(11) num_2 = random_list(11) answer = int(input(f'What is {num_1} times {num_2}')) while not answer == num_1 * num_2: answer = int(input('Incorrect. Please try again.')) print("Correct!") 模式,但这将混合命名样式,因此,如果您不希望采用这种方法,完全可以避免。

理想情况下,对于python,您将根据官方attr-rgx的首选命名方式使用snake_case,几乎适用于除类名以外的所有内容。

请记住,命名约定只是约定,并且大多是主观的,您的代码仍然可以工作,只会产生不好的“气味”。对于库和api,使用非常规的命名约定可能会使潜在用户不太可能集成您的代码,因此实际上可能对项目的成功有害。