加法和乘法难题

任何人都可以复制或解释以下内容 显然__ADD__和 __MUL__? 班级高斯提供了一个子手机骨头 加斯整数的实施(高斯 整数是一个复杂的x+yi 是 整数): 高斯类(对象): """代表高斯整数的班级""""" def __init __(self,x,y = 0): self.real,self.imag = x,y def __repr __(自我): 返回reter(self.real) +" +" + reter(self.imag) +"*i" def __add __(自我,其他): 如果类型(其他)!=高斯: 其他=高斯(其他) 返回高斯(self.real + other.real, self.imag + other.imag) def __mul __(自我,其他): 如果类型(其他)!=高斯: 其他=高斯(其他) 返回高斯(self.Real * other.Real- self.imag * other.imag,\ self.Real * other.imag + self.imag *其他. 在Python 2.3.2下,我得到了: Trackback(最近的最新电话): 文件" ",第1行,在? TypeError: +:'int'的不支持操作数类型 和"高斯" 换句话说,我可以 *乘 * int乘高斯 无论哪种顺序,我只能 *添加 *高斯 int,不是相反. 惊喜是 将int乘以高斯作品---我希望 要抱怨,因为没有定义__rmul __方法, 就像3+产生例外的方式一样 以上. 为什么添加和乘法行为 有不同的方式吗? 您希望启蒙, 标记 ____________________________________________ 你雅虎吗? 新的Yahoo! 购物 - 改进的产品搜索http://shopping.yahoo.com

# 回答1

" Mark Dickinson" 在消息中写道 org ... Trackback(最近的最新通话):文件" ",第1行,IN? typeError: +:'int'和'高斯'的无支撑操作数类型,换句话说,我可以以任何一个顺序 *乘 * int,但我只能在int上 *添加 * * 另一种方式. 令人惊讶的是,将int乘以高斯作品 - 我希望它会抱怨,因为没有__rmul __方法定义的方法,就像3+我在上面产生了一个例外一样. 为什么添加和乘法的行为有所不同? 我认为新样式课程创建了这个,因为旧样式课程表现相同 乘法和划分的行为: 课程测试: def __init __(self,val): self.val = val def __add __(自我,其他): 返回self.val +其他 def __mul __(自我,其他): 返回self.val *其他 在typeObject.c中,我发现: sqslot(" __ add__",sq_concat,slot_sq_concat,wrap_binaryfunc, " x .__添加__(y)<==> x+y"), sqslot(" __ mul__",sq_repeat,slot_sq_repeat,wrap_intargfunc, " x .__ mul __(n)<==> x*n"), sqslot(" __ rmul__",sq_repeat,slot_sq_repeat,wrap_intargfunc, " x .__ rmul __(n)<==> n*x"), 我的猜测是解释了乘法的作用和加法的原因 没有,因为没有相应的sqslot(" __ radd __" ...但是添加 sqslot(" __ radd__",sq_concat,slot_sq_concat,wrap_binaryfunc, " x .__ radd __(y)<==> y+x"), 和r 调整没有解决问题,所以我要么在错误的轨道上,要么 错过了沿途的连接. emile van sebille embyet@fenx.com
# 回答2

马克·迪金森(Mark Dickinson)写道:Trackback(最近的最新电话):文件" ",第1行,IN? typeError: +:'int'和'高斯'的无支撑操作数类型,换句话说,我可以以任何一个顺序 *乘 * int,但我只能在int上 *添加 * * 另一种方式. 令人惊讶的是,将int乘以高斯作品 - 我希望它会抱怨,因为没有__rmul __方法定义的方法,就像3+我在上面产生了一个例外一样. 为什么添加和乘法的行为有所不同? 您希望能启蒙,马克 ______________________________________________? 新的Yahoo! 购物 - 改进的产品搜索http://shopping.yahoo.com 3*我在Python 2.2.2下给出了预期错误. 确实很好奇.
# 回答3

" Mark Dickinson" 在消息中写道 org ... Trackback(最近的最新通话):文件" ",第1行,IN? typeError: +:'int'和'高斯'的无支撑操作数类型,换句话说,我可以以任何一个顺序 *乘 * int,但我只能在int上 *添加 * * 另一种方式. 令人惊讶的是,将int乘以高斯作品 - 我希望它会抱怨,因为没有__rmul __方法定义的方法,就像3+我在上面产生了一个例外一样. 为什么添加和乘法的行为有所不同? 您希望能启蒙,马克 我隐约记得一次关于讨论的讨论 摆脱" R"操作员. 我不记得什么 不过,曾经有过,我同意不一致 __mul__和__ADD__的治疗很奇怪. 我猜测 布尔实施中可能已经失去了一些东西. Python参考手册什么也没说 不过, 新的Yahoo! 购物 - 改进的产品搜索http://shopping.yahoo.com

标签: python

添加新评论