class tri:
def __init__(self,x=0):
self.x=x
def __str__(self):
return '({0})'.format(self.x)
def __add__(self,one,two):
length=self.x+one.x+two.x
return length
>>>perp=tri(5)
>>>print(perp)
>>>base=tri(8)
>>>print(base)
>>>hyp=tri(9)
>>>print(hyp)
>>>print (perp+base+hyp)
这是给我看的:
TypeError(): __add__() missing 1 required positional argument: 'two'
有什么问题吗?我不明白
The signature of ^{} 必须是
__add__(self, other)
,而不是__add__(self,one,two)
。+
的左边参数是self
参数,右边参数是__add__
的另一个参数在python中重载像
__add__
这样的魔术方法的目的是在__add__
方法中定义自定义功能,而不是改变它的基本用途。__add__
方法对应于+
运算符,它用作两个变量之间的运算符。换句话说2 + 2
基本上就是说2.__add__(2)
。您将方法定义为:所以您要向magic方法添加第三个变量,因此
2 + 2
基本上是2.__add__(2, missing_var)
,这就是它告诉您缺少参数的原因。我建议将此定义改为:如果您真的想重载您的方法,那么您的
print
方法将按预期工作。如果确实需要一个方法来添加三个变量,那么在类中定义另一个方法,但是重载__add__
通常不是一个好的解决方案相关问题 更多 >
编程相关推荐