8.16. new —创建运行时内部对象

从 2.6 版开始不推荐使用:Python 3 中已删除new模块。请改用types模块的类。

new模块允许与解释程序对象创建Function的接口。当需要“神奇地”创建新对象而不是pass使用常规创建函数时,这主要用于 marshal 型函数。此模块为解释器提供了一个低级接口,因此在使用此模块时必须格外小心。可以提供非明智的参数,从而在使用对象时使解释器崩溃。

new模块定义以下Function:

  • new. instance(* class * [,* dict *])

    • 此函数使用字典* dict 创建 class 的实例,而无需调用init()构造函数。如果Ellipsis dict *或None,则会为新实例创建一个新的空字典。请注意,不能保证该对象将处于一致状态。
  • new. instancemethod(* function instance class *)

    • 此函数将返回绑定到* instance 的方法对象,如果 instance *为None则不绑定。 Function必须是可调用的。
  • new. function(* code globals * [,* name * [,* argdefs * [,* closure *]]])

    • 返回具有给定代码和全局变量的(Python)函数。如果指定* name ,则必须为字符串或None。如果它是字符串,则该函数将具有给定的名称,否则该函数的名称将取自code.co_name。如果给定 argdefs ,则它必须是一个 Tuples,并将用于确定参数的默认值。如果给出 closure *,它必须是None或包含要绑定到code.co_freevars中的名称的对象的单元格 Tuples。
  • new. code((argcount nlocals stacksize flags codestring constants names varnames filename name firstlineno lnotab * )

  • new. module(* name * [,* doc *])

    • 此函数返回名称为* name *的新模块对象。 * name 必须为字符串。可选的 doc *参数可以具有任何类型。
  • new. classobj(* name baseclasses dict *)

    • 此函数返回一个新的类对象,名称为* name ,它是从 baseclasses (应该是一个类的 Tuples)派生的,并带有命名空间 dict *。