파이썬에서 * 연산자를 오버로드하고 싶습니다. C++에서는 참조 연산자를 오버로드하여 *alpha
에 응답하는 사용자 정의 방법으로 클래스를 만들 수 있습니다.Python에서 오버로드 * 연산자 (또는 에뮬레이션)
이 질문의 일부는 정확히 알지 못합니다. 정확히 말하면 * 연산자 (내가 호출 할 때 연산자를 풀음)가 의미하는 바가 있습니다.
어떻게 오버로드 할 수 있습니까? 아니면 과부하를 에뮬레이트 할 수 있습니까?
궁극적으로 나는 사용자 정의 응답 및 반환 값이있는 *alpha
을 수행 할 수 있기를 원합니다.
편집 :
I 조 킹톤의 의견에 대한 해결책 덕분에 발견했다. *alpha
은 __iter__
에 따라 언팩하므로, 이것을 허용하도록 상속받을 수있는 간단한 클래스를 정의했습니다.
그런데 내가 할 수 있기를 바랄 이유는 예쁜 인터페이스가 필요했기 때문입니다.
class Deref:
def __deref__(self):
pass
def __iter__(self):
yield self.__deref__()
class DerefTest(Deref):
def __deref__(self):
return '123cat'
if __name__ == '__main__':
print(*DerefTest()) # prints '123cat'
은 결국 나는 또 다른 단항 연산자를 사용하여 정착 때문에 나는 모든 경우에 작동, 그래서 dissapoint 생각하지 않는했다 구현.
'__iter__'을 오버로드하여 원하는 작업을 수행 할 수 있어야합니다. 그러나 이는 개체를 반복 할 때 영향을줍니다. –
함수 호출 및 정의에서 매개 변수 이름 앞에있는'*'및'**'구문은 연산자 자체로 간주되지 않으므로 오버로드 할 수 없습니다. (왜 이것을하고 싶습니까?) – geoffspear
"과부하"하고 싶은 것은 무엇입니까? 무슨 목적을 위해? 예제 유스 케이스를 제공 할 수 있습니까? –