LINUX.ORG.RU

История изменений

Исправление Virtuos86, (текущая версия) :

Портировал, но пришлось без декоратора, потому что я сейчас слабо представляю, как и, главное, зачем.

Если ты про wrapper с generic_method, то это ж элементарщина:
1. Нам надо, чтобы к экземплярам класса junction можно было применять всякие операторы. В питоне эта машинерия устроена как дерганье соответствующих «специальных» методов (вида __%metodname%__). Значит, надо прописать классу эти методы.
2. Я выбрал самый дубовый. В самом теле класса циклом устанавливаю ему «всеядный» псевдометод — функцию, которая принимает любое количество любых аргументов и, соответственно, может успешно имитировать интерфейс и арность любого метода.
_wrapattr остался от предыдущей версии, я об этом писал в пред. комментарии, но пихать его в generic_method показалось совсем плохой идеей: как-то всё перегружено будет выглядеть. Так и оставил.
3. Итого, класс успешно складывается, делится, множится и вычитается, остальное дело техники.

Исходная версия Virtuos86, :

Портировал, но пришлось без декоратора, потому что я сейчас слабо представляю, как и, главное, зачем.

Если ты про wrapper с generic_method, то это ж элементарщина:
1. Нам надо, чтобы к экземплярам класса junction можно было применять всякие операторы. В питоне эта машинерия устроена как дерганье соответствующих «специальных» методов (вида __%metodname%__). Значит, надо прописать классу эти методы.
2. Я выбрал самый дубовый. В самом теле класса циклом устанавливаю ему «всеядный» псевдометод — функцию, которая принимает любой количество любых аргументов и соответственно, может успешно имитировать интерфейс и арность любого метода.
_wrapattr остался от предыдущей версии, я об этом писал в пред. комментарии, но пихать его в generic_method показалось совсем плохой идеей: как-то всё перегружено будет выглядеть. Так и оставил.
3. Итого, класс успешно складывается, делится, множится и вычитается, остальное дело техники.