我想在Python中重载*运算符。在C++中,可以重载解引用运算符,这样就可以创建一个类,以自定义的方式响应
我不知道*运算符(我称之为展开运算符)确切的作用是什么,这也是问题的一部分。
那么我该如何重载它,或者模拟它的重载呢?
最终我想能够使用自定义响应和返回值执行
编辑:
感谢Joe Kington的评论,我找到了解决方案。由于
顺便说一下,我想要能够做到这一点的原因是因为我想要一个漂亮的界面。
*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'
最终,我只好使用另一个一元运算符,因为我给出的实现并不适用于所有情况,所以我感到失望。
__iter__
来实现你想要的功能,但这会影响到对象的任何迭代。 - Joe Kington*
和**
语法并不被视为运算符,不能进行重载。(你为什么想要这样做?) - Wooble