Python does not support traditional method overloading in the way languages like C++ or Java do. If you define multiple methods with the same name, the last definition will simply overwrite all previous ones.
However, you can achieve the same resultโmaking a single method behave differently based on the number or type of argumentsโusing Python’s flexible features.
What is Method Overloading?
In many other programming languages, method overloading is the ability to create multiple methods with the same name but with different parameters (either a different number of parameters or different types). The compiler or interpreter then decides which version of the method to call based on the arguments you provide.
Why Traditional Overloading Doesn’t Work in Python
In Python, functions and methods are objects. When you define a method in a class, you’re binding a name to a function object. If you define another method with the same name, you’re just rebinding that same name to a new function object, effectively discarding the old one.
Let’s see what happens if you try it:
Python
class MyClass:
def show_message(self):
print("Hello!")
# This definition overwrites the one above
def show_message(self, name):
print(f"Hello, {name}!")
obj = MyClass()
# Now, let's try calling the methods
obj.show_message("Alice") # This works fine
try:
obj.show_message() # This will fail
except TypeError as e:
print(f"\nError: {e}")
Output:
Hello, Alice!
Error: MyClass.show_message() missing 1 required positional argument: 'name'
As you can see, the first show_message() method (with no parameters) was completely replaced by the second one.
How to Achieve Similar Behavior in Python
Here are the common “Pythonic” ways to simulate method overloading.
1. Using Default Arguments
This is the simplest and most common approach. You can define a single method and provide default values for some parameters, making them optional.
Example:
Let’s create a method that can calculate the area of a square (which needs one side) or a rectangle (which needs a length and width).
Python
class AreaCalculator:
def calculate_area(self, length, width=None):
"""
Calculates the area.
- If only length is provided, it's treated as a square.
- If both length and width are provided, it's a rectangle.
"""
if width is None:
# It's a square
return f"Area of the square is: {length * length}"
else:
# It's a rectangle
return f"Area of the rectangle is: {length * width}"
# Create an instance
calc = AreaCalculator()
# Call the method with one argument (like a square)
print(calc.calculate_area(5))
# Call the same method with two arguments (like a rectangle)
print(calc.calculate_area(5, 10))
Output:
Area of the square is: 25
Area of the rectangle is: 50
2. Using Variable-Length Arguments (*args)
For more complex scenarios where the number of arguments can vary widely, you can use *args. This packs all positional arguments into a tuple. You can then check the length of this tuple to determine how the method should behave.
Example:
Python
class Adder:
def add(self, *args):
# Check how many arguments were passed
num_args = len(args)
if num_args == 0:
return "No numbers to add!"
else:
total = sum(args)
return f"The sum of {num_args} numbers is: {total}"
# Create an instance
adder = Adder()
# Call the method with different numbers of arguments
print(adder.add())
print(adder.add(5))
print(adder.add(5, 10))
print(adder.add(5, 10, 15, 20))
Output:
No numbers to add!
The sum of 1 numbers is: 5
The sum of 2 numbers is: 15
The sum of 4 numbers is: 50
! เฐชเฑเฐฅเฐพเฐจเฑโเฐฒเฑ เฐฎเฑเฐฅเฐกเฑ เฐเฐตเฐฐเฑโเฐฒเฑเฐกเฐฟเฐเฐเฑ เฐเฑเฐฐเฐฟเฐเฐเฐฟเฐจ เฐตเฐฟเฐตเฐฐเฐฃเฐจเฑ เฐคเฑเฐฒเฑเฐเฑเฐฒเฑ เฐเฐฟเฐเฐฆ เฐเฐเฑเฐเฐพเฐจเฑ.
เฐชเฑเฐฅเฐพเฐจเฑ, C++ เฐฒเฑเฐฆเฐพ เฐเฐพเฐตเฐพ เฐตเฐเฐเฐฟ เฐญเฐพเฐทเฐฒเฐฒเฑ เฐเฐจเฑเฐจเฐเฑเฐฒเฑเฐเฐพ เฐธเฐพเฐเฐชเฑเฐฐเฐฆเฐพเฐฏ เฐฎเฑเฐฅเฐกเฑ เฐเฐตเฐฐเฑโเฐฒเฑเฐกเฐฟเฐเฐเฑโเฐเฑ เฐฎเฐฆเฑเฐฆเฐคเฑ เฐเฐตเฑเฐตเฐฆเฑ. เฐฎเฑเฐฐเฑ เฐเฐเฑ เฐชเฑเฐฐเฑเฐคเฑ เฐฌเฐนเฑเฐณ เฐฎเฑเฐฅเฐกเฑเฐธเฑโเฐจเฑ เฐกเฐฟเฐซเฑเฐจเฑ เฐเฑเฐธเฑเฐคเฑ, เฐเฐฟเฐตเฐฐเฐฟเฐเฐพ เฐกเฐฟเฐซเฑเฐจเฑ เฐเฑเฐธเฐฟเฐจ เฐฎเฑเฐฅเฐกเฑ เฐฎเฐพเฐคเฑเฐฐเฐฎเฑ เฐจเฐฟเฐฒเฐฟเฐเฐฟ เฐเฐเฐเฑเฐเฐฆเฐฟ, เฐฎเฑเฐจเฑเฐชเฐเฐฟ เฐตเฐพเฐเฐจเฑเฐจเฐฟเฐเฐเฐฟเฐจเฑ เฐ เฐฆเฐฟ เฐเฐตเฐฐเฑโเฐฐเฑเฐเฑ เฐเฑเฐธเฑเฐคเฑเฐเฐฆเฐฟ.
เฐ เฐฏเฐฟเฐคเฑ, เฐชเฑเฐฅเฐพเฐจเฑ เฐฏเฑเฐเฑเฐ เฐซเฑเฐฒเฑเฐเฑเฐธเฐฟเฐฌเฑเฐฒเฑ เฐซเฑเฐเฐฐเฑเฐฒเฐจเฑ เฐเฐชเฐฏเฑเฐเฐฟเฐเฐเฐฟ เฐฎเฑเฐฐเฑ เฐ เฐฆเฑ เฐซเฐฒเฐฟเฐคเฐพเฐจเฑเฐจเฐฟโเฐ เฐเฐเฑ, เฐเฐฐเฑเฐเฑเฐฏเฑเฐฎเฑเฐเฐเฑเฐฒ เฐธเฐเฐเฑเฐฏ เฐฒเฑเฐฆเฐพ เฐฐเฐเฐพเฐจเฑเฐจเฐฟ เฐฌเฐเฑเฐเฐฟ เฐเฐเฑ เฐฎเฑเฐฅเฐกเฑ เฐตเฐฟเฐญเฐฟเฐจเฑเฐจเฐเฐเฐพ เฐชเฑเฐฐเฐตเฐฐเฑเฐคเฐฟเฐเฐเฑเฐฒเฐพโเฐธเฐพเฐงเฐฟเฐเฐเฐตเฐเฑเฐเฑ.
เฐฎเฑเฐฅเฐกเฑ เฐเฐตเฐฐเฑโเฐฒเฑเฐกเฐฟเฐเฐเฑ เฐ เฐเฐเฑ เฐเฐฎเฐฟเฐเฐฟ?
เฐเฐพเฐฒเฐพ เฐเฐคเฐฐ เฐชเฑเฐฐเฑเฐเฑเฐฐเฐพเฐฎเฐฟเฐเฐเฑ เฐญเฐพเฐทเฐฒเฐฒเฑ, เฐฎเฑเฐฅเฐกเฑ เฐเฐตเฐฐเฑโเฐฒเฑเฐกเฐฟเฐเฐเฑ เฐ เฐเฐเฑ เฐเฐเฑ เฐเฑเฐฒเฐพเฐธเฑโเฐฒเฑ เฐเฐเฑ เฐชเฑเฐฐเฑเฐคเฑ เฐเฐพเฐจเฑ เฐตเฐฟเฐญเฐฟเฐจเฑเฐจ เฐชเฐพเฐฐเฐพเฐฎเฑเฐเฐฐเฑเฐฒเฐคเฑ (เฐชเฐพเฐฐเฐพเฐฎเฑเฐเฐฐเฑเฐฒ เฐธเฐเฐเฑเฐฏ เฐฒเฑเฐฆเฐพ เฐตเฐพเฐเฐฟ เฐฐเฐเฐพเฐฒเฑ เฐตเฑเฐฐเฑเฐตเฑเฐฐเฑเฐเฐพ) เฐฌเฐนเฑเฐณ เฐฎเฑเฐฅเฐกเฑเฐธเฑโเฐจเฑ เฐเฑเฐฐเฐฟเฐฏเฑเฐเฑ เฐเฑเฐฏเฐเฐฒเฐเฐกเฐ. เฐ เฐชเฑเฐชเฑเฐกเฑ เฐฎเฑเฐฐเฑ เฐ เฐเฐฆเฐฟเฐเฐเฑ เฐเฐฐเฑเฐเฑเฐฏเฑเฐฎเฑเฐเฐเฑเฐฒเฐจเฑ เฐฌเฐเฑเฐเฐฟ เฐ เฐตเฑเฐฐเฑเฐทเฐจเฑ เฐฎเฑเฐฅเฐกเฑโเฐจเฑ เฐเฐพเฐฒเฑ เฐเฑเฐฏเฐพเฐฒเฑ เฐเฐเฐชเฑเฐฒเฐฐเฑ เฐฒเฑเฐฆเฐพ เฐเฐเฐเฐฐเฑโเฐชเฑเฐฐเฑเฐเฐฐเฑ เฐจเฐฟเฐฐเฑเฐฃเฐฏเฐฟเฐธเฑเฐคเฑเฐเฐฆเฐฟ.
เฐชเฑเฐฅเฐพเฐจเฑโเฐฒเฑ เฐธเฐพเฐเฐชเฑเฐฐเฐฆเฐพเฐฏ เฐเฐตเฐฐเฑโเฐฒเฑเฐกเฐฟเฐเฐเฑ เฐเฐเฐฆเฑเฐเฑ เฐชเฐจเฐฟเฐเฑเฐฏเฐฆเฑ?
เฐชเฑเฐฅเฐพเฐจเฑโเฐฒเฑ, เฐซเฐเฐเฑเฐทเฐจเฑเฐฒเฑ เฐฎเฐฐเฐฟเฐฏเฑ เฐฎเฑเฐฅเฐกเฑเฐธเฑ เฐเฑเฐกเฐพ เฐเฐฌเฑเฐเฑเฐเฑเฐเฑเฐฒเฑ. เฐฎเฑเฐฐเฑ เฐเฐ เฐเฑเฐฒเฐพเฐธเฑโเฐฒเฑ เฐเฐ เฐฎเฑเฐฅเฐกเฑโเฐจเฑ เฐกเฐฟเฐซเฑเฐจเฑ เฐเฑเฐธเฐฟเฐจเฐชเฑเฐชเฑเฐกเฑ, เฐฎเฑเฐฐเฑ เฐเฐ เฐชเฑเฐฐเฑเฐจเฑ เฐเฐ เฐซเฐเฐเฑเฐทเฐจเฑ เฐเฐฌเฑเฐเฑเฐเฑเฐเฑโเฐเฑ เฐเฑเฐเฐพเฐฏเฐฟเฐธเฑเฐคเฑเฐจเฑเฐจเฐพเฐฐเฑ. เฐฎเฑเฐฐเฑ เฐ เฐฆเฑ เฐชเฑเฐฐเฑเฐคเฑ เฐฎเฐฐเฑเฐ เฐฎเฑเฐฅเฐกเฑโเฐจเฑ เฐกเฐฟเฐซเฑเฐจเฑ เฐเฑเฐธเฑเฐคเฑ, เฐฎเฑเฐฐเฑ เฐ เฐฆเฑ เฐชเฑเฐฐเฑเฐจเฑ เฐเฑเฐคเฑเฐค เฐซเฐเฐเฑเฐทเฐจเฑ เฐเฐฌเฑเฐเฑเฐเฑเฐเฑโเฐเฑ เฐคเฐฟเฐฐเฐฟเฐเฐฟ เฐเฑเฐเฐพเฐฏเฐฟเฐธเฑเฐคเฑเฐจเฑเฐจเฐพเฐฐเฑ, เฐฆเฑเฐจเฐฟเฐตเฐฒเฑเฐฒ เฐชเฐพเฐคเฐฆเฐฟ เฐคเฑเฐฒเฐเฐฟเฐชเฑเฐคเฑเฐเฐฆเฐฟ.
เฐเฐเฐตเฑเฐณ เฐชเฑเฐฐเฐฏเฐคเฑเฐจเฐฟเฐธเฑเฐคเฑ เฐเฐฎเฐตเฑเฐคเฑเฐเฐฆเฑ เฐเฑเฐฆเฑเฐฆเฐพเฐ:
Python
class MyClass:
def show_message(self):
print("เฐนเฐฒเฑ!")
# เฐชเฑเฐจ เฐเฐจเฑเฐจ เฐฎเฑเฐฅเฐกเฑ เฐจเฑ เฐ เฐกเฑเฐซเฐฟเฐจเฐฟเฐทเฐจเฑ เฐเฐตเฐฐเฑโเฐฐเฑเฐเฑ เฐเฑเฐธเฑเฐคเฑเฐเฐฆเฐฟ
def show_message(self, name):
print(f"เฐนเฐฒเฑ, {name}!")
obj = MyClass()
# เฐเฐชเฑเฐชเฑเฐกเฑ, เฐฎเฑเฐฅเฐกเฑเฐธเฑ เฐจเฑ เฐเฐพเฐฒเฑ เฐเฑเฐฏเฐกเฐพเฐจเฐฟเฐเฐฟ เฐชเฑเฐฐเฐฏเฐคเฑเฐจเฐฟเฐฆเฑเฐฆเฐพเฐ
obj.show_message("เฐเฐฒเฐฟเฐธเฑ") # เฐเฐฆเฐฟ เฐธเฐฐเฐฟเฐเฑเฐเฐพ เฐชเฐจเฐฟเฐเฑเฐธเฑเฐคเฑเฐเฐฆเฐฟ
try:
obj.show_message() # เฐเฐฆเฐฟ เฐตเฐฟเฐซเฐฒเฐฎเฐตเฑเฐคเฑเฐเฐฆเฐฟ
except TypeError as e:
print(f"\nเฐฒเฑเฐชเฐ (Error): {e}")
เฐซเฐฒเฐฟเฐคเฐ (Output):
เฐนเฐฒเฑ, เฐเฐฒเฐฟเฐธเฑ!
เฐฒเฑเฐชเฐ (Error): MyClass.show_message() missing 1 required positional argument: 'name'
เฐฎเฑเฐฐเฑ เฐเฑเฐธเฐฟเฐจเฐเฑเฐฒเฑเฐเฐพ, เฐฎเฑเฐฆเฐเฐฟ show_message() เฐฎเฑเฐฅเฐกเฑ (เฐชเฐพเฐฐเฐพเฐฎเฑเฐเฐฐเฑเฐฒเฑ เฐฒเฑเฐจเฐฟเฐฆเฐฟ) เฐฐเฑเฐเฐกเฐตเฐฆเฐพเฐจเฐฟ เฐฆเฑเฐตเฐพเฐฐเฐพ เฐชเฑเฐฐเฑเฐคเฐฟเฐเฐพ เฐฐเฑเฐชเฑเฐฒเฑเฐธเฑ เฐเฑเฐฏเฐฌเฐกเฐฟเฐเฐฆเฐฟ.
เฐชเฑเฐฅเฐพเฐจเฑโเฐฒเฑ เฐเฐฒเฐพเฐเฐเฐฟ เฐชเฑเฐฐเฐตเฐฐเฑเฐคเฐจเฐจเฑ เฐเฐฒเฐพ เฐธเฐพเฐงเฐฟเฐเฐเฐพเฐฒเฐฟ?
เฐฎเฑเฐฅเฐกเฑ เฐเฐตเฐฐเฑโเฐฒเฑเฐกเฐฟเฐเฐเฑโเฐจเฑ เฐ เฐจเฑเฐเฐฐเฐฟเฐเฐเฐกเฐพเฐจเฐฟเฐเฐฟ เฐธเฐพเฐงเฐพเฐฐเฐฃเฐเฐเฐพ เฐเฐชเฐฏเฑเฐเฐฟเฐเฐเฑ “เฐชเฑเฐฅเฐพเฐจเฐฟเฐเฑ” เฐฎเฐพเฐฐเฑเฐเฐพเฐฒเฑ เฐเฐเฑเฐเฐก เฐเฐจเฑเฐจเฐพเฐฏเฐฟ.
1. เฐกเฑเฐซเฐพเฐฒเฑเฐเฑ เฐเฐฐเฑเฐเฑเฐฏเฑเฐฎเฑเฐเฐเฑเฐธเฑ (Default Arguments) เฐเฐชเฐฏเฑเฐเฐฟเฐเฐเฐฟ
เฐเฐฆเฐฟ เฐเฐพเฐฒเฐพ เฐธเฑเฐฒเฐญเฐฎเฑเฐจ เฐฎเฐฐเฐฟเฐฏเฑ เฐธเฐพเฐงเฐพเฐฐเฐฃ เฐชเฐฆเฑเฐงเฐคเฐฟ. เฐฎเฑเฐฐเฑ เฐเฐเฑ เฐฎเฑเฐฅเฐกเฑโเฐจเฑ เฐกเฐฟเฐซเฑเฐจเฑ เฐเฑเฐธเฐฟ, เฐเฑเฐจเฑเฐจเฐฟ เฐชเฐพเฐฐเฐพเฐฎเฑเฐเฐฐเฑเฐฒเฐเฑ เฐกเฑเฐซเฐพเฐฒเฑเฐเฑ เฐตเฐฟเฐฒเฑเฐตเฐฒเฐจเฑ เฐ เฐเฐฆเฐฟเฐเฐเฐกเฐ เฐฆเฑเฐตเฐพเฐฐเฐพ เฐตเฐพเฐเฐฟเฐจเฐฟ เฐเฐเฑเฐเฐฟเฐเฐ (optional) เฐเฑเฐฏเฐตเฐเฑเฐเฑ.
เฐเฐฆเฐพเฐนเฐฐเฐฃ:
เฐเฐคเฑเฐฐเฐธเฑเฐฐเฐ (เฐเฐ เฐญเฑเฐเฐ เฐ เฐตเฐธเฐฐเฐ) เฐฒเฑเฐฆเฐพ เฐฆเฑเฐฐเฑเฐเฐเฐคเฑเฐฐเฐธเฑเฐฐเฐ (เฐชเฑเฐกเฐตเฑ เฐฎเฐฐเฐฟเฐฏเฑ เฐตเฑเฐกเฐฒเฑเฐชเฑ เฐ เฐตเฐธเฐฐเฐ) เฐฏเฑเฐเฑเฐ เฐตเฑเฐถเฐพเฐฒเฑเฐฏเฐพเฐจเฑเฐจเฐฟ เฐฒเฑเฐเฑเฐเฐฟเฐเฐเฐเฐฒ เฐเฐ เฐฎเฑเฐฅเฐกเฑโเฐจเฑ เฐเฑเฐฐเฐฟเฐฏเฑเฐเฑ เฐเฑเฐฆเฑเฐฆเฐพเฐ.
Python
class AreaCalculator:
def calculate_area(self, length, width=None):
"""
เฐตเฑเฐถเฐพเฐฒเฑเฐฏเฐพเฐจเฑเฐจเฐฟ เฐฒเฑเฐเฑเฐเฐฟเฐธเฑเฐคเฑเฐเฐฆเฐฟ.
- เฐเฑเฐตเฐฒเฐ เฐชเฑเฐกเฐตเฑ เฐฎเฐพเฐคเฑเฐฐเฐฎเฑ เฐเฐธเฑเฐคเฑ, เฐ
เฐฆเฐฟ เฐเฐคเฑเฐฐเฐธเฑเฐฐเฐเฐเฐพ เฐชเฐฐเฐฟเฐเฐฃเฐฟเฐเฐเฐฌเฐกเฑเฐคเฑเฐเฐฆเฐฟ.
- เฐชเฑเฐกเฐตเฑ เฐฎเฐฐเฐฟเฐฏเฑ เฐตเฑเฐกเฐฒเฑเฐชเฑ เฐฐเฑเฐเฐกเฑ เฐเฐธเฑเฐคเฑ, เฐ
เฐฆเฐฟ เฐฆเฑเฐฐเฑเฐเฐเฐคเฑเฐฐเฐธเฑเฐฐเฐ.
"""
if width is None:
# เฐเฐฆเฐฟ เฐเฐ เฐเฐคเฑเฐฐเฐธเฑเฐฐเฐ
return f"เฐเฐคเฑเฐฐเฐธเฑเฐฐเฐ เฐฏเฑเฐเฑเฐ เฐตเฑเฐถเฐพเฐฒเฑเฐฏเฐ: {length * length}"
else:
# เฐเฐฆเฐฟ เฐเฐ เฐฆเฑเฐฐเฑเฐเฐเฐคเฑเฐฐเฐธเฑเฐฐเฐ
return f"เฐฆเฑเฐฐเฑเฐเฐเฐคเฑเฐฐเฐธเฑเฐฐเฐ เฐฏเฑเฐเฑเฐ เฐตเฑเฐถเฐพเฐฒเฑเฐฏเฐ: {length * width}"
# เฐเฐ เฐเฐจเฑโเฐธเฑเฐเฐพเฐจเฑเฐธเฑโเฐจเฑ เฐเฑเฐฐเฐฟเฐฏเฑเฐเฑ เฐเฑเฐฏเฐเฐกเฐฟ
calc = AreaCalculator()
# เฐเฐ เฐเฐฐเฑเฐเฑเฐฏเฑเฐฎเฑเฐเฐเฑโเฐคเฑ เฐฎเฑเฐฅเฐกเฑโเฐจเฑ เฐเฐพเฐฒเฑ เฐเฑเฐฏเฐเฐกเฐฟ (เฐเฐคเฑเฐฐเฐธเฑเฐฐเฐ เฐฒเฐพเฐเฐพ)
print(calc.calculate_area(5))
# เฐ
เฐฆเฑ เฐฎเฑเฐฅเฐกเฑโเฐจเฑ เฐฐเฑเฐเฐกเฑ เฐเฐฐเฑเฐเฑเฐฏเฑเฐฎเฑเฐเฐเฑเฐฒเฐคเฑ เฐเฐพเฐฒเฑ เฐเฑเฐฏเฐเฐกเฐฟ (เฐฆเฑเฐฐเฑเฐเฐเฐคเฑเฐฐเฐธเฑเฐฐเฐ เฐฒเฐพเฐเฐพ)
print(calc.calculate_area(5, 10))
เฐซเฐฒเฐฟเฐคเฐ (Output):
เฐเฐคเฑเฐฐเฐธเฑเฐฐเฐ เฐฏเฑเฐเฑเฐ เฐตเฑเฐถเฐพเฐฒเฑเฐฏเฐ: 25
เฐฆเฑเฐฐเฑเฐเฐเฐคเฑเฐฐเฐธเฑเฐฐเฐ เฐฏเฑเฐเฑเฐ เฐตเฑเฐถเฐพเฐฒเฑเฐฏเฐ: 50
2. เฐตเฑเฐฐเฐฟเฐฏเฐฌเฑเฐฒเฑ-เฐฒเฑเฐเฐเฑเฐคเฑ เฐเฐฐเฑเฐเฑเฐฏเฑเฐฎเฑเฐเฐเฑเฐธเฑ (*args) เฐเฐชเฐฏเฑเฐเฐฟเฐเฐเฐฟ
เฐเฐฐเฑเฐเฑเฐฏเฑเฐฎเฑเฐเฐเฑเฐฒ เฐธเฐเฐเฑเฐฏ เฐเฐเฑเฐเฑเฐตเฐเฐพ เฐฎเฐพเฐฐเฑ เฐธเฐเฐเฑเฐฒเฐฟเฐทเฑเฐ เฐธเฐเฐฆเฐฐเฑเฐญเฐพเฐฒ เฐเฑเฐธเฐ, เฐฎเฑเฐฐเฑ *args เฐจเฑ เฐเฐชเฐฏเฑเฐเฐฟเฐเฐเฐตเฐเฑเฐเฑ. เฐเฐฆเฐฟ เฐ
เฐจเฑเฐจเฐฟ เฐชเฑเฐเฐฟเฐทเฐจเฐฒเฑ เฐเฐฐเฑเฐเฑเฐฏเฑเฐฎเฑเฐเฐเฑเฐฒเฐจเฑ เฐเฐ เฐเฐชเฑเฐฒเฑ (tuple) เฐฒเฑเฐเฐฟ เฐชเฑเฐฏเฐพเฐเฑ เฐเฑเฐธเฑเฐคเฑเฐเฐฆเฐฟ. เฐฎเฑเฐฅเฐกเฑ เฐเฐฒเฐพ เฐชเฑเฐฐเฐตเฐฐเฑเฐคเฐฟเฐเฐเฐพเฐฒเฑ เฐจเฐฟเฐฐเฑเฐฃเฐฏเฐฟเฐเฐเฐกเฐพเฐจเฐฟเฐเฐฟ เฐฎเฑเฐฐเฑ เฐ เฐเฐชเฑเฐฒเฑ เฐฏเฑเฐเฑเฐ เฐชเฑเฐกเฐตเฑเฐจเฑ เฐคเฐจเฐฟเฐเฑ เฐเฑเฐฏเฐตเฐเฑเฐเฑ.
เฐเฐฆเฐพเฐนเฐฐเฐฃ:
Python
class Adder:
def add(self, *args):
# เฐเฐจเฑเฐจเฐฟ เฐเฐฐเฑเฐเฑเฐฏเฑเฐฎเฑเฐเฐเฑเฐฒเฑ เฐชเฐพเฐธเฑ เฐเฑเฐฏเฐฌเฐกเฑเฐกเฐพเฐฏเฑ เฐคเฐจเฐฟเฐเฑ เฐเฑเฐฏเฐเฐกเฐฟ
num_args = len(args)
if num_args == 0:
return "เฐเฑเฐกเฐเฐพเฐจเฐฟเฐเฐฟ เฐธเฐเฐเฑเฐฏเฐฒเฑ เฐฒเฑเฐตเฑ!"
else:
total = sum(args)
return f"{num_args} เฐธเฐเฐเฑเฐฏเฐฒ เฐฎเฑเฐคเฑเฐคเฐ: {total}"
# เฐเฐ เฐเฐจเฑโเฐธเฑเฐเฐพเฐจเฑเฐธเฑโเฐจเฑ เฐเฑเฐฐเฐฟเฐฏเฑเฐเฑ เฐเฑเฐฏเฐเฐกเฐฟ
adder = Adder()
# เฐตเฐฟเฐญเฐฟเฐจเฑเฐจ เฐธเฐเฐเฑเฐฏเฐฒ เฐเฐฐเฑเฐเฑเฐฏเฑเฐฎเฑเฐเฐเฑเฐฒเฐคเฑ เฐฎเฑเฐฅเฐกเฑโเฐจเฑ เฐเฐพเฐฒเฑ เฐเฑเฐฏเฐเฐกเฐฟ
print(adder.add())
print(adder.add(5))
print(adder.add(5, 10))
print(adder.add(5, 10, 15, 20))
เฐซเฐฒเฐฟเฐคเฐ (Output):
เฐเฑเฐกเฐเฐพเฐจเฐฟเฐเฐฟ เฐธเฐเฐเฑเฐฏเฐฒเฑ เฐฒเฑเฐตเฑ!
1 เฐธเฐเฐเฑเฐฏเฐฒ เฐฎเฑเฐคเฑเฐคเฐ: 5
2 เฐธเฐเฐเฑเฐฏเฐฒ เฐฎเฑเฐคเฑเฐคเฐ: 15
4 เฐธเฐเฐเฑเฐฏเฐฒ เฐฎเฑเฐคเฑเฐคเฐ: 50