Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

boost/python/scope.hpp

Boost , Boost.Python Reference Manual , Chapter 2. High Level Components

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Определяет возможности для запроса и управления областью Python (пространством имен), которая будет содержать новые классы и функции.

Класс масштаба имеет связанный глобальный объект Python, который управляет пространством имен Python, в котором новые классы расширений и обернутые функции будут определены как атрибуты. Дефолт-конструкция нового объекта привязки связывает его с глобальным объектом Python. Конструирование объекта сферы действия аргументом изменяет связанный глобальный объект Python на тот, который удерживается аргументом, до тех пор, пока не закончится срок службы объекта сферы действия, и в это время связанный глобальный объект Python возвращается к тому, чем он был до того, как объект области действия был построен.

namespace boost { namespace python
{
  class scope : public object
  {
   public:
      scope(scope const&);
      scope(object const&);
      scope();
      ~scope()
   private:
      void operator=(scope const&);
  };
}}
explicit scope(scope const& x);
explicit scope(object const& x);

Хранит ссылку на текущий ассоциированный объект сферы действия и устанавливает ассоциированный объект сферы действия на объект, упомянутый x.ptr(). Базовый класс объекта инициализируется с помощью x.

scope();

Сохраняет ссылку на текущий связанный объект объема. Базовый класс объекта инициализируется с текущим связанным объектом объема. За пределами любой функции инициализации модуля текущий объект Python не является ни одним.

~scope()

Устанавливает текущий связанный объект Python на сохраненный объект.

Следующий пример показывает, как можно использовать настройку объема для определения вложенных классов.

C++ Определение модуля:

#include <boost/python/module.hpp>
#include <boost/python/class.hpp>
#include <boost/python/scope.hpp>
using namespace boost::python;
struct X
{
  void f() {}
  struct Y { int g() { return 42; } };
};
BOOST_PYTHON_MODULE(nested)
{
   // add some constants to the current (module) scope
   scope().attr("yes") = 1;
   scope().attr("no") = 0;
   // Change the current scope 
   scope outer
       = class_<X>("X")
            .def("f", &X::f)
            ;
   // Define a class Y in the current scope, X
   class_<X::Y>("Y")
      .def("g", &X::Y::g)
      ;
}

Интерактивный Python:

>>> import nested
>>> nested.yes
1
>>> y = nested.X.Y()
>>> y.g()
42

PrevUpHomeNext

Статья boost/python/scope.hpp раздела Boost.Python Reference Manual Chapter 2. High Level Components может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 2. High Level Components ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 06:31:24/0.0037269592285156/0