Python - multiplication between a variable that belong to the same class
如何设置类变量返回到其他数据类型(list或int)?
所以我有两个属于同一类的变量,我想用这个操作符,例如,将两个变量相乘,但这不能完成,因为这两个变量都有类数据类型。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 (most recent call
last) in ()
14 a = Multip(5,6)
15 b = Multip(7,5)
---> 16 c = a*b
17 print(c)in mul(self, other)
10 thisclass = self.x*self.y
11 otherclass = other
---> 12 return thisclass * otherclass
13
14 a = Multip(5,6)TypeError: unsupported operand type(s) for *: 'int' and 'Multip'
要使其工作,请执行以下操作:
1 | otherclass = other.x*other.y |
而不是
1 | otherclass = other |
这意味着OtherClass是一个int,乘法就可以了。
这称为重载。您需要重写
向类中添加类似的方法:
1 2 3 4 5 6 | def __mul__(self, other): print '__mul__' return result def __rmul__(self, other): print '__rmul__' return result |
我没有在其中添加任何操作,因为我不确定您打算如何进行乘法,但是对于所有数学运算符都有重载方法。