Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Method overloading trong Python

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 multipledispatch hoặc functools.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.