'class object'使用`.__ name__`打印其名称,尽管没有`__name__`属性

Alg*_*bra 4 python

可以访问Class_object的名称.__name__,参见代码:

>>> object
<class 'object'>
>>> object.__name__
'object'
Run Code Online (Sandbox Code Playgroud)

不过,__name__方法 is not inclass_object的默认设置.

代码:

>>> foo = dir(object)
>>> foo
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
>>> foo.count('__name__')
0    # '__name__' is not in list
Run Code Online (Sandbox Code Playgroud)

object是所有类的基础.它具有所有Python类实例共有的方法.

哪里__name__的设置位于?

MSe*_*ert 6

执行类主体后,Python将自动填充一些属性.这包括__name__但是__doc__,__qualname__(Python 3.4+)和__module__.这些自动化属性的完整列表可以作为模块文档中的表格inspect:

Type    Attribute       Description
class   __doc__         documentation string
        __name__        name with which this class was defined
        __qualname__    qualified name
        __module__      name of module in which this class was defined
Run Code Online (Sandbox Code Playgroud)

这些是由Python类的基本元类定义的:( type另请参阅@Szabolcs答案).

>>> '__name__' in dir(object.__class__)
True
Run Code Online (Sandbox Code Playgroud)