Method overloading = có nhiều method cùng tên nhưng signature khác. Python không hỗ trợ method overloading truyền thống (như Java/C++).
Không thể có hai method cùng tên trong Python - định nghĩa sau ghi đè định nghĩa trước.
Giải pháp thay thế
- Default arguments:
def foo(a, b=10) - Variable arguments:
def foo(*args, **kwargs) - Type checking bên trong method: xử lý khác nhau theo type
- Multiple dispatch: thư viện
multipledispatchhoặcfunctools.singledispatch(function, không phải method)
Ví dụ với default args
class Calculator:
def add(self, a, b=0, c=0):
return a + b + c
calc = Calculator()
print(calc.add(1)) # 1
print(calc.add(1, 2)) # 3
print(calc.add(1, 2, 3)) # 6
Kết luận: Python dùng default args, *args/**kwargs, hoặc single dispatch thay cho method overloading.