Pythonで*演算子をオーバーロードしたい。C ++では、間接参照演算子をオーバーロードできるため、に応答するカスタムの方法でクラスを作成できます*alpha
。
この質問の一部は、私が正確にわからないということです。つまり、*演算子(私が呼んでいるアンパック演算子)が何をするのかを正確に意味します。
では、どうすればオーバーロードするか、オーバーロードをエミュレートできますか。
*alpha
最終的には、カスタム応答と戻り値を使用して実行できるようにしたいと考えています。
編集:
JoeKingtonのコメントのおかげで解決策を見つけました。*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'
結局、私が与えた実装がすべての場合に機能するとは限らないので、私は別の単項演算子を使用することに決めました。それで私はがっかりしました。