Python - 属于同一个类的变量之间的乘法

时间:2017-09-12 04:08:30

标签: python python-3.x class oop

如何设置类变量返回其他数据类型(list或int)?

所以我有两个属于同一个类的变量,我想使用运算符作为两个变量的乘法,但是由于它们都具有类数据类型,所以无法完成。

例如:

class Multip:
    def __init__(self,x,y):
        self.x = x
        self.y = y
    def __repr__(self):
        return "{} x {}".format(self.x, self.y)
    def __str__(self):
        return "{}".format(self.x*self.y)
    def __mul__(self, other):
        thisclass = self.x*self.y
        otherclass = other
        return thisclass * otherclass
a = Multip(5,6)
b = Multip(7,5)
c = a*b
print(c)

这将返回错误:

  

TypeError Traceback(最近一次调用   最后)in()        14 a =乘法(5,6)        15 b =乘法(7,5)   ---> 16 c = a * b        17打印(c)

      mul 中的

(自我,其他)        10 thisclass = self.x * self.y        11 otherclass = other   ---> 12返回thisclass * otherclass        13        14 a =乘以(5,6)

     

TypeError:*:'int'和'Multip'不支持的操作数类型

2 个答案:

答案 0 :(得分:1)

要实现这一点,请执行以下操作:

otherclass = other.x*other.y

而不是

otherclass = other

这意味着otherclass是一个int,乘法将起作用。

答案 1 :(得分:0)

这称为重载。您需要覆盖__mul__方法,__rmul__方法或两者。 __rmul__是如何处理不同类型的乘法,而__mul__如果两者属于同一类则有效。

将类似的方法添加到您的班级:

def __mul__(self, other):
    print '__mul__'
    return result
def __rmul__(self, other):
    print '__rmul__'
    return result

我没有添加任何操作,因为我不确定你打算如何进行乘法,但是所有数学运算符都有重载方法。