【问题标题】:What's convention for naming a class or method as "class" in Python?在 Python 中将类或方法命名为“类”的约定是什么?
【发布时间】:2016-12-07 16:37:56
【问题描述】:

假设我在 Python 中有一个这样的类:

class Student:
    def __init__(self, classs):
        self.classs = classs

现在,命名参数(和类属性)classs 的约定是什么?我看到了classsklass,我想知道:有什么约定吗?在 PEP8 中没有找到。

【问题讨论】:

  • 我见过 klass、clazz、cls。

标签: python naming-conventions pep8


【解决方案1】:

PEP 8 建议在这种情况下使用尾随下划线:class_

详情请见https://www.python.org/dev/peps/pep-0008/#descriptive-naming-styles

single_trailing_underscore_ :按惯例使用以避免冲突 使用 Python 关键字,例如

Tkinter.Toplevel(master, class_='ClassName')

【讨论】:

  • 非常感谢,我忽略了那个例子。
  • 而且 Django 不允许字段名称使用尾随下划线。 (fields.E001) Field names must not end with an underscore.。该死的:D
【解决方案2】:

在我看来,PEP 8 中class_ 的正确答案很尴尬,并且可能有问题,正如其他地方对该答案的评论一样。 PyCharm IDE 似乎更喜欢 cls 用于类方法,这让我对它的 coder-happy 缩写感到恼火,而可以说或多或少可读且易于理解的 klass 仍然是一个拼写错误。所以我想为这些情况抛出一个替代方案,包括类包装器等:

我用的是Class,由于大小写,没有保留。

我知道很多人会说变量名应该是小写的,但是对象和类型、类和函数、变量和预定义之间的界限在 Python 中都是模糊的。例如,如果我要写:

NoneType = type(None)

您是否认为它应该重命名为NONE_TYPE,因为它是全球性的? NoneType 是一个类,尽管它不是使用 class 关键字定义的。同样Class 是一个类,尽管它也是一个变量。通过大写它,我只是强调一个方面而不是另一个方面。我对所有代表类型的变量都这样做。

【讨论】:

    【解决方案3】:

    实际上并没有约定。我见过 - 并且可能使用过 - klass_classcls

    【讨论】:

      猜你喜欢
      • 2012-11-25
      • 1970-01-01
      • 2018-04-15
      • 2010-12-29
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多