Как добавить свойство к модулю в повышении:: Python?

Можно добавить свойство к классу с помощью метода считывания и метода set (в упрощенном случае):

class<X>("X")
    .add_property("foo", &X::get_foo, &X::set_foo);

Таким образом можно использовать его из Python как это:

>>> x = mymodule.X()
>>> x.foo = 'aaa'
>>> x.foo
'aaa'

Но как добавить свойство к самому модулю (не класс)?

Существует

scope().attr("globalAttr") = ??? something ???

и

def("globalAttr", ??? something ???);

Я могу добавить глобальные функции и объекты моего класса с помощью вышеупомянутых двух путей, но, может казаться, не добавляю свойства тот же путь как в классах.

10
задан Alex B 29 April 2010 в 06:23
поделиться

1 ответ

__ getattr __ и __ setattr __ не вызываются в модулях, поэтому вы не можете этого сделать в обычном Python без хаков (вроде сохранения класса в словаре модуля). Учитывая это, маловероятно, что в Boost Python есть элегантный способ сделать это.

2
ответ дан 4 December 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: