+ 1
(solved)There are two questions, the second I have done but the first why it can't call area. Any advices ?
class Shape: def __init__(self, w, h): self.width = w self.height = h def area(self): return self.width*self.height #your code goes here def __add(self,other): self.width = self.width+other.width self.height = self.height+other.height return Shape(self.width, self.height) def __gt__(self,other): area1 = self.width*self.height area2 = other.width*other.height return area1 > area2 w1 = int(input()) h1 = int(input()) w2 = int(input()) h2 = int(input()) s1 = Shape(w1, h1) s2 = Shape(w2, h2) result = s1 + s2 print(result.area()) print(s1 > s2)
5 odpowiedzi
+ 2
because if you do shape1 + shape2, you doesn't expect to have result stored inside shape1...
if you want so, you do shape1 = shape1 + shape2
+ 2
# magic method __add__ take leading AND trailing double dunder
# when you add width, and then height, I think you do not modify original (self) width and height
def __add__(self,other):
width = self.width+other.width
height = self.height+other.height
return Shape(width, height)
0
Why self must be removed ?
0
Ohhh, I see, I know my mistake. Thank you visph
0
Okay, I know why I have to name not as same as in init, because it will change the originals. Btw, thanks for million, finally I got the meaning 😂