【问题标题】:In python why is the "object" class all in lower case instead of first letter in capitals?在python中,为什么“对象”类都是小写而不是大写的第一个字母?
【发布时间】:2016-09-05 10:42:50
【问题描述】:

我尝试在网上搜索这个问题,但是因为“对象”这个词很常见,我得到了很多不相关的结果,而不是我正在寻找的结果。我还在这里查看了官方文档:https://docs.python.org/3/tutorial/classes.html 并没有找到任何解释。所以当你读到这个问题时,请不要惊慌。

问题:

在 Python 中,在声明一个新类时,我们扩展了对象类。例如:

class SomeClass(object):
    #eggs and ham etc

这里我们注意到SomeClass 有一个大写的S,因为我们遵循驼峰式。然而,我们继承自的类——“object”似乎并没有遵循这个命名约定。为什么对象类都是小写的?

【问题讨论】:

标签: python class inheritance


【解决方案1】:

所有 Python 的内置类型都有小写:int、str、unicode、float、bool 等。对象类型只是其中之一。

【讨论】:

  • object 看起来确实像一个关键字。但是,在搜索更多内容时,我在 collections 包中发现了一个 defaultdict 类。 “defaultdict”是一个扩展 dict 类的类。它不是内置的,但它是用小写字母声明的。这里是不是有什么问题,或者某些 Python 类真的以小写形式声明?
  • @Mugen OrderedDict 用驼峰写法。不同之处在于它们出现的 Python 版本:defaultdict 为 2.5,OrderedDict 为 2.7。不知道有没有关系...
  • @Mugen Btw 这个问题也包含在this answer中。
【解决方案2】:

https://www.python.org/dev/peps/pep-0008/#class-names 说:

类名

类名通常应使用 CapWords 约定。

在以下情况下,可以使用函数的命名约定 该接口已记录并主要用作可调用对象。

请注意,内置名称有一个单独的约定:大多数 内置名称是单个单词(或两个单词一起运行),其中 CapWords 约定仅用于异常名称和内置 常量。 [强调我的]

所有其他类都应使用 CapWorlds 约定。由于listobject 等是内置名称,它们遵循这个单独的约定

(抄自我对If the convention in Python is to capitalize classes, why then is list() not capitalized? Is it not a class?的回答)

【讨论】:

    【解决方案3】:

    如果你去 python 解释器并这样做:

    >>> object
    <type 'object'>
    

    你会看到 object 是一个内置类型,python 中的其他内置类型也是小写的type, int, bool, float, str, list, tuple, dict, ...。例如:

    >>> type.__class__
    <type 'type'>
    >>> object.__class__
    <type 'type'>     
    >>> int.__class__
    <type 'type'>
    >>> type.__class__
    <type 'type'>
    >>> int.__class__
    <type 'type'>
    >>> bool.__class__
    <type 'type'>
    >>> float.__class__
    <type 'type'>
    >>> str.__class__
    <type 'type'>
    >>> list.__class__
    <type 'type'>
    >>> tuple.__class__
    <type 'type'>
    >>> dict.__class__
    <type 'type'>
    

    所以它们不是小写是有道理的,这样很容易将它们与其他类型的类区分开来

    【讨论】:

    • “你会看到对象是内置类型,而不是类” 类型和类是合并的,从技术上讲,类型是类,类是类型. Python 的模型中存在循环关系。
    【解决方案4】:

    简短而基本的答案是,class 只是 python 解释器用来知道什么时候需要将某些东西视为类的关键字,例如您如何使用“def”来定义函数。它是一个关键字来描述接下来的一切。

    【讨论】:

    • 操作询问的是对象而不是类。
    • 那是我的错,在这种情况下丹尼尔的答案更好。
    • @BrandonJones 哈哈。在你知道你没有回答这个问题之后,你为什么不删除你的答案?我真的很想知道你的想法。
    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 2015-08-06
    • 2017-03-17
    • 2021-12-17
    • 2013-06-25
    • 1970-01-01
    • 2013-11-29
    相关资源
    最近更新 更多