+
, -
과 같은 기본 연산을 원하는 클래스를 정의하고 sin
과 같은 고급 연산을 지원하도록 정의했습니다. 즉,이 기본 연산자와 수학 함수에 대한 몇 가지 새로운 규칙을 정의해야합니다.수학 및 numpy 모듈에서 기존 함수를 사용자 정의 객체를 지원하려면 어떻게합니까?
,
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
가 정의 같은 평 파일에 기본 기능을 재정의 할 수있는, 그런
def sin(x):
pass
로
그리고이 파일의 이름을 myoperator.py로 지정하십시오. 그런 다음이 모듈을 가져 와서 NewObj
개체에 새로운 작업을 적용 할 수있었습니다.
은 그러나 나는 또한 math.sin()
와 numpy.sin()
도 내 새롭게 정의 NewObj
객체를 지원하도록 내 NewObj
객체를 지원하기 위해 numpy
및 math
의 기존 기능을합니다. 이것을 어떻게 할 수 있습니까?
또 다른 질문은 : 마법의 메서드처럼 내 NewObj
클래스 안에 함수를 캡슐화하여 모든 데이터가 클래스 데이터 구조 내에 작성되도록 할 수 있습니까?
대답의 'numpy'비트를 다시 입력하십시오. 이것은 매우 유용하게 보입니다. 현재 '__array_priority__'및 친구들과 어떻게 관련이 있습니까? 그리고 그 미래에 대한'__numpy_ufunc__'는 무엇입니까? 포인터를 제공 할 수 있습니까? 감사! –
@PaulPanzer : 나는이 상황에서'__array_priority__'가 나오지 않을 것이라고 생각합니다. '__numpy_ufunc__'에 대해서는'__numpy_ufunc__'가 어떻게 상호 작용하는지 모르겠습니다. – user2357112