Написание модулей Astropy для Matlab / Что такое архитектура программного обеспечения? - PullRequest
0 голосов
/ 08 мая 2020

Matlab не имеет такой функции, как Astropy Units . Эта функция позволяет прикреплять единицы к числовым данным в Python. Единицы можно разложить, умножить, разделить, упростить. Он выдает ошибки, когда числовые данные с единицами измерения добавляются к числовым данным с неправильными единицами или вообще без единиц.

Данными с единицами измерения можно манипулировать в линейной алгебре, БПФ, ... с помощью NumPy. Единицы также отображаются в LaTex и на осях фигур.

Хотя я понимаю концепцию OOP, я не понимаю, как была написана Astropy без массового переписывания NumPy (и др.) .

Каким образом NumPy может принимать объекты, помеченные единицей Astopy, не переписывая каждый метод в NumPy?

1 Ответ

1 голос
/ 09 мая 2020

Astropy Quantity является подклассом класса numpy ndarray. Он предоставляет метод __array_function__ (https://numpy.org/neps/nep-0018-array-function-protocol.html), который позволяет переопределить поведение функции numpy.

Если вас интересует архитектура программного обеспечения, вам следует go вперед и посмотрите исходный код:

https://github.com/astropy/astropy/blob/master/astropy/units/quantity.py

...