+ 2

# Unable to overload +

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): return Shape(self.width + other.width, self.height + other.height) def gt(self, other): return self.area() > other.area() w1 = int(input()) h1 = int(input()) w2 = int(input()) h2 = int(input()) s1 = Shape(w1, h1) s2 = Shape(w2, h2) print(s1 + s2) print(Shape.gt(s1,s2)) Please correct the code, so that I can get s1 + s2

10 Answers

+ 5

Adding two shapes creates a new one. Store the new shape to a variable, then print the area of the new shape.
gt is supposed to be the "greater than" operator. The magic method is __gt__, not gt. Then you need to print s1 > s2 to compare the areas of the shapes

+ 2

Can you add question description clearly or task number?
one I know is : There it is already given to find area() for the result object as I given. Code is already includes those statements. You may be deleted those lines. Try again by resetting code.
Task is to implement addition method only.. And your implementation works fine.

+ 1

What is your expected output?
Your implementation is correct but seems incomplete...

+ 1

They are asking to return sum of length and some of width.

+ 1

One I found is said to implement overriding method only.. Rest of the code is given already as to "add objects and find area() "
So
obj = s1 + s2
print( obj.area())
Addition method implemented works...

+ 1

The output gives object type and not addition, unfortunately ðŸ˜”

+ 1

Thank you for the help. I will try once again

+ 1

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 __str__(self):
return f'{self.width},{self.height}'
def __add__(self,other):
return Shape(self.width + other.width, self.height + other.height)
def __gt__(self, other):
return self.area() > other.area()
w1 = int(input())
h1 = int(input())
w2 = int(input())
h2 = int(input())
s1 = Shape(w1, h1)
s2 = Shape(w2, h2)
print(s1)
print(s2)
print(s1+s2)
print(s1>s2)

+ 1

Thank you Bob_Li

0

Gouri
without a __str__ definition, what you get when you print s1, s2 or s1+s2 is just the __repr__.

Hot today

What's wrong? :(

1 Votes

Why won't my image display

0 Votes

I have made a calculator in which my % (Percentage) not work correctly for 100%50 or 100%20.

2 Votes

How the answer is 50?

0 Votes

Number of Ones ( C++ ) question!

1 Votes