问题描述
class MyClass:
def __init__(self,abAb):
self.__abAb = abAb
现在,皮林特抱怨道:
Attribute name "__abAb" doesn't conform to camelCase naming style
Python并不真正了解私有变量,但据我所知,可以通过在两个下划线前加前缀来实现。但是,现在我有一个问题,就是pylint抱怨,并且我还没有找到禁用该消息的好方法,而:
还有另一种方式允许这样的名称吗?类似于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,使用非常规的命名约定可能会使潜在用户不太可能集成您的代码,因此实际上可能对项目的成功有害。