8.16. new – Создание внутренних объектов времени выполнения¶new – Creation of runtime internal objects
Модуль new предоставляет интерфейс к функциям создания объектов интерпретатора.
В основном он используется в функциях типа marshal, когда новый объект нужно создать «магически», а не через обычные функции создания.
Этот модуль предоставляет низкоуровневый интерфейс к интерпретатору, поэтому при его использовании следует соблюдать осторожность.
Можно передать бессмысленные аргументы, которые приведут к краху интерпретатора при использовании объекта.
Модуль new определяет следующие функции:
-
new.instance(class[, dict])¶ Эта функция создаёт экземпляр class со словарём dict без вызова конструктора
__init__(). Если 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, это должен быть кортеж, и он будет использоваться для определения значений параметров по умолчанию. Если задан closure, это должен бытьNoneили кортеж объектов ячеек, содержащих объекты для привязки к именам изcode.co_freevars.
-
new.code(argcount, nlocals, stacksize, flags, codestring, constants, names, varnames, filename, name, firstlineno, lnotab)¶ Эта функция является интерфейсом к C-функции
PyCode_New().
-
new.module(name[, doc])¶ Эта функция возвращает новый объект модуля с именем name. name должен быть строкой. Необязательный аргумент doc может иметь любой тип.
-
new.classobj(name, baseclasses, dict)¶ Эта функция возвращает новый объект класса с именем name, производный от baseclasses (который должен быть кортежем классов) и с пространством имён dict.