相关疑难解决方法(0)

如何使__add__的numpy重载独立于操作数顺序?

在包含numpy数组作为属性的类中重载运算符时,我遇到了一个问题.根据操作数的顺序,结果类型将是我的类A(所需行为)或numpy数组.如何使它始终返回A的实例?

例:

import numpy as np

class A(object):
    """ class overloading a numpy array for addition
    """
    def __init__(self, values):
        self.values = values

    def __add__(self, x):
        """ addition
        """
        x = np.array(x) # make sure input is numpy compatible
        return A(self.values + x)

    def __radd__(self, x):
        """ reversed-order (LHS <-> RHS) addition
        """
        x = np.array(x) # make sure input is numpy compatible
        return A(x + self.values)

    def __array__(self):
        """ so that numpy's array() returns values
        """
        return self.values

    def …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy operator-overloading

5
推荐指数
2
解决办法
1907
查看次数

标签 统计

arrays ×1

numpy ×1

operator-overloading ×1

python ×1