【发布时间】: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,但我想看看是否还有其他要点。 -
Class是Students的组(/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