我想在 python 中重载 * 运算符。在 C++ 中,您可以重载取消引用运算符,以便您可以创建一个具有自定义方式的类来响应*alpha
.
这个问题的一部分是我不确切知道,我的意思是确切地说,* 运算符(我称之为解包运算符)的作用。
那么我该如何重载它,或者模拟它的重载。
最终我希望能够做到:*alpha
使用自定义响应和返回值。
编辑:
感谢 Joe Kington 的评论,我找到了解决方案。由于*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'
最终我决定使用另一个一元运算符,因为我给出的实现在所有情况下都不起作用,所以我很失望。