如何设置类变量返回其他数据类型(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'不支持的操作数类型
答案 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
我没有添加任何操作,因为我不确定你打算如何进行乘法,但是所有数学运算符都有重载方法。