在线文档教程

Types: 12. Other Built-in Types

12. Other Built-in Types

解释器支持其他几种对象。其中大多数只支持一两个操作。

12.1。模块

模块上唯一的特殊操作是属性访问:m.name,其中m是模块,名称访问m的符号表中定义名称。模块属性可以分配给。(请注意,该import语句严格来说不是对模块对象的操作; import foo不需要名为foo的模块对象存在,而是需要某个名为foo的模块的(外部)定义。)

每个模块的特殊属性是__dict__。这是包含模块符号表的字典。修改这个字典实际上会改变模块的符号表,但直接赋值给__dict__属性是不可能的(你可以写m.__dict__['a'] = 1,定义m.a1,但不能写m.__dict__ = {})。__dict__不建议直接修改。

内置在解释器中的模块是这样写的:<module 'sys' (built-in)>。如果从一个文件加载,它们被写为<module 'os' from '/usr/local/lib/pythonX.Y/os.pyc'>。

12.2。类和类实例

请参阅对象,值和类型以及这些类的定义

12.3。功能

函数对象由函数定义创建。函数对象的唯一操作是调用它:func(argument-list)

实际上有两种功能对象:内置函数和用户定义函数。两者都支持相同的操作(来调用函数),但实现是不同的,因此不同的对象类型。

有关更多信息,请参阅函数定义

12.4。方法

方法是使用属性表示法调用的函数。有两种风格:内置方法(如append()列表)和类实例方法。内置方法用支持它们的类型来描述。

该实现为类实例方法添加了两个特殊的只读属性:m.im_self方法运行的对象,以及m.im_func实现该方法的函数。callingm(arg-1, arg-2, ..., arg-n)与calling完全等同m.im_func(m.im_self, arg-1, arg-2, ..., arg-n)

类实例方法是绑定或非绑定的,分别指的是该方法是通过实例还是类来访问。当一个方法被解除绑定时,它的im_self属性将被None调用,并且如果被调用,则self必须将一个显式对象作为第一个参数传递。在这种情况下,self必须是未绑定方法的类(或该类的子类)的实例,否则TypeError会引发a。

和函数对象一样,方法对象也支持获取任意属性。但是,由于方法属性实际上存储在底层函数对象(meth.im_func)中,因此禁止在绑定或未绑定方法上设置方法属性。尝试在方法上设置属性会导致AttributeError引发。为了设置一个方法属性,你需要在底层函数对象上明确地设置它:

>>> class C: ... def method(self): ... pass ... >>> c = C() >>> c.method.whoami = 'my name is method' # can't set on the method Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'instancemethod' object has no attribute 'whoami' >>> c.method.im_func.whoami = 'my name is method' >>> c.method.whoami 'my name is method'

有关更多信息,请参阅标准类型层次结构

12.5。代码对象

代码对象被实现用来表示“伪编译”的可执行Python代码,如函数体。它们不同于函数对象,因为它们不包含对其全局执行环境的引用。代码对象由内置compile()函数返回,并可以通过函数对象的func_code属性提取。另请参阅code模块。

通过将代码对象(而不是源字符串)传递给exec语句或内置eval()函数,可以执行或评估代码对象。

有关更多信息,请参阅标准类型层次结构

12.6。键入对象

类型对象表示各种对象类型。对象的类型由内置函数访问type()。类型没有特别的操作。标准模块types定义了所有标准内置类型的名称。

类型是这样写的:<type 'int'>。

12.7。空对象

该对象由不显式返回值的函数返回。它不支持特殊操作。只有一个空对象,名为None(内置名称)。

它被写为None

12.8。省略对象

该对象由扩展切片符号使用(请参见切片)。它不支持特殊操作。有一个省略号对象,名为Ellipsis(内置名称)。

它被写为Ellipsis。当在一个下标,也可以写为...,例如seq[...]

12.9。未实现的对象

当它们被要求对不支持的类型进行操作时,该对象从比较和二进制操作中返回。有关更多信息,请参阅比较

它被写为NotImplemented

12.10。布尔值

布尔值是两个常量对象FalseTrue。它们被用来表示真值(尽管其他值也可以被认为是错误或真实的)。在数值上下文中(例如,当用作算术运算符的参数时),它们的行为分别与整数0和1相同。bool()如果该值可以被解释为真值(参见上面的真值测试部分),那么可以使用内置函数将任何值转换为布尔值。

它们分别写成FalseTrue

12.11。内部对象

请参阅此信息的标准类型层次结构。它描述了堆栈框架对象,追溯对象和切片对象。