我定義了一個我喜歡基本操作的類,如+
,-
,甚至更高級的數學運算,如sin
來支持。也就是說,我需要爲這些基本的運算符和數學函數定義一些新的規則。如何讓數學和numpy模塊中的現有功能支持用戶定義的對象?
我可以處理使用Python的魔術方法如下基礎運營商,
class NewObj():
def __init__(self, *args):
pass
def __add__(self, other):
pass
def __mul__(self, other):
pass
# Use magic methods to define other basic operators below...
而且我也可以重新定義在類NewObj
的定義相同.py文件的基本功能,如
def sin(x):
pass
並將該文件命名爲myoperator.py。然後,我可以導入此模塊並在NewObj
對象上應用新操作。
但我也想在numpy
和math
現有的功能來支持我的NewObj
對象,以便math.sin()
和numpy.sin()
也支持我的新定義NewObj
對象。我怎樣才能做到這一點?
另一個問題是:是否有可能將函數封裝在我的NewObj
類中,就像魔術方法一樣,以便所有東西都寫在類數據結構中?
重新回答你的答案。這看起來非常有用。它與當前的__array_priority__和朋友有什麼關係?未來的'__numpy_ufunc__'就是這個問題?你能提供一個指針嗎?謝謝! –
@PaulPanzer:我不認爲'__array_priority__'會出現在這種情況下。至於'__numpy_ufunc__',我不知道'__numpy_ufunc__'如何與此交互。 – user2357112