如何处理长路径名以符合 pep8 要求?

how to handle long path name for pep8 compliance?

为了符合 pep8,我将如何处理如下所示的长路径名?即使变得有些不可读,是否必须每行 79 个字符?

def setUp(self):
    self.patcher1 = patch('projectname.common.credential.CredentialCache.mymethodname')                 

有多种方法可以做到这一点:

  1. 用一个变量来存储这个

    def setUp(self):
        path = 'projectname.common.credential.CredentialCache.mymethodname'
        self.patcher1 = patch(path)
    
  2. 字符串连接:

    v = ("a" "b" "c") 这样的赋值被转换成 v = "abc":

    def setUp(self):
        self.patcher1 = patch(
            "projectname.common.credential."
            "CredentialCache.mymethodname")
    
  3. 告诉 pep8 我们不再使用带有 --max-line-length=100(或一些足够合理的值)的 80 列终端。 (下面的帽子提示@chepner :))

PEP8 中的 79 个字符限制更多地是基于历史信念而不是实际可读性。 PEP8 的所有内容都是一个指南,但这个指南比大多数建议更容易被忽视。 pep8 工具甚至有一个特定选项,用于更改被视为 "too long".

的值
pep8 --max-line-length 100 myscript.py

我经常完全禁用测试:

pep8 --ignore E501 myscript.py

我更喜欢带串联的变体。

def setUp(self):
    self.patcher1 = patch(
        "projectname.common.credential."
        "CredentialCache.mymethodname")

调用函数时也不需要连接大括号。

80 列准则不仅是为了人们在 1980 年的 barkley unix 终端上编码,而且还保证了项目之间的一些一致性。多亏了它,您可以根据自己的喜好设置 IDE 的 GUI,并确保它适用于所有不同的项目。

唉,有时最好的解决办法就是违反它,这种情况极为罕见,但确实会发生。正是出于这个原因,您可以用评论标记该行:# noinspection PyPep8 这样您就可以将您的代码变成:

def setUp(self):
    # noinspection PyPep8
    self.patcher1 = patch('projectname.common.credential.CredentialCache.mymethodname')   

这将使您完全遵循 pep8 的准则,包括线路限制,而不必担心这种虚假报告。遗憾的是,并非所有检查器都支持此指令,但它正在慢慢实现。