【问题标题】:Can a Python class apply two-way overloading? [duplicate]Python 类可以应用双向重载吗? [复制]
【发布时间】:2015-04-10 13:15:35
【问题描述】:

我不知道该怎么称呼它,所以请多多包涵。

现在我有一个类/对象,我在其中重载了乘法运算符def __mul__(self, secondthing):,所以如果我这样做myObject * 4,它知道如何处理它。

但是如果我做4 * myObject,它不知道该怎么做,反之亦然。

【问题讨论】:

标签: python class


【解决方案1】:

你可以实现__rmul__

调用这些方法来实现二进制算术运算(+、-、*、/、%、divmod()、pow()、**、>、&、^、|)与反射(交换)操作数。这些函数仅在左操作数不支持相应操作且操作数类型不同时才会调用。

【讨论】:

  • this 相关帖子建议您只需执行__rmul__ = __mul__,前提是无论如何实现都是相同的。
  • 始终尝试成为DRY。创建另一个函数并在两者中调用它,或者可能直接调用另一个重载函数。
猜你喜欢
  • 2014-04-15
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
相关资源
最近更新 更多