【问题标题】:Naming Python class similar to reserved keyword `Class`命名 Python 类类似于保留关键字 `Class`
【发布时间】:2019-03-11 03:17:24
【问题描述】:

在 Python 中为一群学生命名一个班级“班级”是否“可以”/合法,这会导致任何语法问题吗?

请注意,我知道:

class Class:
    def __init__(self):
        pass

my_class = Class()

不会抛出错误,但会不会在长期使用中导致潜在问题?

我可以想象的潜在问题是可能在代码上使用/运行的 linter/parses 问题。我的假设是 Python 的内部不会有问题吗?

我搜索过 SO 和 Google,但由于明显的术语冲突以及许多包含 class Student 的教程而难以获得结果。 我确实发现 PEP8 指的是参数和保留关键字之间的名称冲突,建议在有问题的参数后附加下划线。 对于明显的名称冲突,我还看到了一种更具风格的反对意见,虽然 Class 方法将是 Class 的方法,但它们不会是 classmethods(尽管我找不到 PEP8 禁令),但承认这是意见,因此在外面SO的界限。

【问题讨论】:

  • 按照惯例,任何以大写字母开头的东西通常都是一个类,所以虽然它仍然可能会让一些人感到困惑,但我认为对于有经验的 Python 程序员或使用具有语法突出显示的编辑器的任何人来说,应该是很好。
  • 另外,没有合理的 linter 会做 if token.lower() == 'class': # parse class'c' != 'C',所以我怀疑你会破坏任何 linter 或解析器。
  • 很公平。虽然我认为因为没有错误而没问题,但有人建议我这是一个很好的问题,因为肯定会再次被问到。不过,我相信有人可以比我更充分地回答,不过如果几天后没人回答,我会自己回答。
  • 我在同一条船上。我宁愿把我的答案作为评论,看看其他人怎么说,相对不受影响。我敢肯定有很多人会因为混淆而反对使用Class,但我想看看是否还有其他要点。
  • ClassStudents 的组(/set/list/etc.)的一个很好、合法且完全合适的名称,不会引起语义问题。 (((它可能使用户产生歧义或混淆的唯一方法是通用名称或内部名称@classmethod,内部名称Class.__class__,或者如果有人写了ClassFactory,等等。我就是pointed out that Class methods would be methods of Class, they would not be classmethods的人。但无论如何都没有其中有人反对 Class 是一个良好且合法的名称,确实如此。)

标签: python python-3.x class naming


【解决方案1】:

总之——Class 是完全合法的,不会对 Python 造成任何问题。因为 Python 区分大小写。因此,任何(合理的)linter 或 IDE 都不应在将其用作标识符时遇到问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-01
    • 2017-07-06
    • 2012-09-14
    • 2020-11-13
    • 2020-01-22
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    相关资源
    最近更新 更多