У меня есть класс python для вычисления количества битов, когда они были указаны с использованием обозначений «Kb», «Mb» или «Gb».Я присвоил @property
методу bits()
, чтобы он всегда возвращал float
(таким образом, он хорошо работает с int(BW('foo').bits)
).
Однако у меня возникают проблемы с выяснением, что делать, когдачистый экземпляр класса приводится как int()
, например int(BW('foo'))
.Я уже определил __repr__()
для возврата строки, но кажется, что этот код не затрагивается при приведении экземпляра класса к типу.
Есть ли способ обнаружить в моем классе, что онприведение в качестве другого типа (и, следовательно, разрешить мне обрабатывать это дело)?
>>> from Models.Network.Bandwidth import BW
>>> BW('98244.2Kb').bits
98244200.0
>>> int(BW('98244.2Kb').bits)
98244200
>>> BW('98244.2Kb')
98244200.0
>>> type(BW('98244.2Kb'))
<class 'Models.Network.Bandwidth.BW'>
>>>
>>> int(BW('98244.2Kb'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string or a number, not 'BW'
>>>