我在Python中重载添加运算符时遇到问题。 每次我试着超载它我得到:
TypeError: __init__() takes exactly 3 arguments (2 given)
这是我的代码:
class Car:
carCount = 0
def __init__(self,brand,cost):
self.brand = brand
self.cost = cost
Car.carCount +=1
def displayCount(self):
print "Number of cars: %d" % Car.carCount
def __str__(self):
return 'Brand: %r Cost: %d' % (self.brand, self.cost)
def __del__(self):
class_name = self.__class__.__name__
print class_name,'destroyed'
def __add__(self,other):
return Car(self.cost+other.cost)
c=Car("Honda",10000)
d=Car("BMW",20000)
print c
a= c+d
答案 0 :(得分:2)
问题是,您的__init__
需要三个参数(包括self
),而您在__add__
方法中只提供了两个参数,因此TypeError
为__init__
}}:
TypeError: __init__() takes exactly 3 arguments (2 given)
所以在你的__add__
中,你应该添加{没有双关语意图} brand
参数:
def __add__(self, other):
return Car(self.brand+other.brand, self.cost+other.cost)
所以在这种情况下你会得到"Honda BMW"
,这可能不是你想要的。
无论哪种方式,我相信你现在都能理解错误,并且你会修复它以获得你想要的功能。
答案 1 :(得分:1)
在__add__
方法中,你应该传递两个参数; brand
遗失:
def __add__(self,other):
return Car('', self.cost+other.cost)
# ^^