# Python Coding challenge - Day 193 | What is the output of the following Python Code?

### Code:

class Doubler(int):

def __mul__(self, other):

return super().__mul__(other * 2)

# Create an instance of Doubler

d = Doubler(3)

# Multiply by another number

result = d * 5

print(result)

### Solution and Explanation:

Let's go through the code step by step:

We define a class Doubler that inherits from the built-in int class.

class Doubler(int):
We override the __mul__ method within the Doubler class. This method gets called when we use the * operator with instances of the Doubler class.

def __mul__(self, other):
Inside the __mul__ method, we double the value of other and then call the __mul__ method of the superclass (int) with this doubled value.

return super().__mul__(other * 2)
We create an instance of the Doubler class with the value 3.

d = Doubler(3)
We multiply this instance (d) by 5.

result = d * 5
When we perform this multiplication, the __mul__ method of the Doubler class is called. Inside this method:
other is the value 5.
We double the value of other (5) to get 10.
Then we call the __mul__ method of the superclass (int) with this doubled value, 10.
Thus, we're effectively performing 3 * 10, resulting in 30.
Finally, we print the result, which is 30.
So, the output of the code is 30.