LINUX.ORG.RU

Ответ на: комментарий от vasilisk_lo

Google protobuf не знает о существовании Decimal и приходится вместе со встроенным типом таскать точность. Но проблема в том, что при наследовании встроенного типа перестает правильно работать isinstance на нём.

Ну или другой момент, можно ли заставить значения без вызова, ну т.е. 0 вместо int(0) использовать измененный тип?

А вообще похоже придется всю цепочку на Decimal переводить, потом конвертить перед protobuf. Слишком поздно вспомнили :(

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 2)
Ответ на: комментарий от steemandlinux

напоминает забивания гвоздей микроскопом… Я не работал с protobuf, но неужели там нет возможность задать юзерскую сериализацию?..

А по поводу наследования вообще что-то странное:

>>> class my_int(int):
...     def __init__(self, *args):
...         super().__init__()
... 
>>> a = my_int(1)
>>> isinstance(a, int)
True

vasilisk_lo
()
Ответ на: комментарий от vasilisk_lo

Мне наоборот надо:

isinstance(1, my_int)

Забейте короче, тут built-in был переписан. И уже всё перетащил на Decimal, который экспоненту с собой таскает.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

я-то забью, но при наследовании всё-таки так:

>>> a = my_int(1)
>>> isinstance(a, int)
True
>>> isinstance(a, my_int)
True

Поэтому-то мне и не понятно, в чём именно была проблема…

А, кажется понял тебя

vasilisk_lo
()
Последнее исправление: vasilisk_lo (всего исправлений: 1)