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