Quá tải hàm Python theo loại

Hai phương thức không thể có cùng tên trong Python. Nạp chồng phương thức trong Python là một tính năng cho phép cùng một toán tử có ý nghĩa khác nhau. Trong bài viết này, chúng ta sẽ xem xét tính năng nạp chồng phương thức trong Python và cách nó được sử dụng để nạp chồng phương thức, theo trình tự sau

Quá tải là gì?

Nạp chồng là khả năng một hàm hoặc một toán tử hành xử theo những cách khác nhau dựa trên các tham số được truyền cho hàm hoặc toán hạng mà toán tử tác động lên

Một số ưu điểm của việc sử dụng quá tải là

  • Quá tải một phương thức thúc đẩy khả năng sử dụng lại. Ví dụ, thay vì viết nhiều phương thức chỉ khác nhau một chút, chúng ta có thể viết một phương thức và nạp chồng nó

  • Quá tải cũng cải thiện độ rõ ràng của mã và loại bỏ sự phức tạp

Quá tải là một khái niệm rất hữu ích. Tuy nhiên, nó có một số nhược điểm liên quan đến nó

  • Quá tải có thể tạo ra sự nhầm lẫn khi được sử dụng trên các ranh giới thừa kế. Khi được sử dụng quá mức, việc quản lý các chức năng quá tải sẽ trở nên cồng kềnh

Trong Python, bạn có thể tạo một phương thức có thể được gọi theo nhiều cách khác nhau. Vì vậy, bạn có thể có một phương thức không có, có một hoặc nhiều tham số. Tùy thuộc vào định nghĩa phương thức, chúng ta có thể gọi nó bằng 0, một hoặc nhiều đối số

Với một phương thức hoặc chức năng duy nhất, số lượng tham số có thể được chỉ định bởi bạn. Quá trình gọi cùng một phương thức theo những cách khác nhau được gọi là nạp chồng phương thức

Bây giờ bạn đã biết nạp chồng phương thức trong Python là gì, hãy lấy một ví dụ. Ở đây, chúng ta tạo một lớp với một phương thức Hello[]. Tham số đầu tiên của phương thức này được đặt thành Không có. Điều này sẽ cung cấp cho chúng tôi tùy chọn để gọi nó có hoặc không có tham số

Một đối tượng cũng được tạo dựa trên lớp và chúng ta sẽ gọi phương thức của nó bằng cách sử dụng 0 và một tham số

ví dụ 1

#!/usr/bin/env python
class Person:
def Hello[self, name=None]:
if name is not None:
print['Hello ' + name]
else:
print['Hello ']
# Create instance
obj = Person[]
# Call the method
obj.Hello[]
# Call the method with a parameter
obj.Hello['Edureka']

đầu ra

Hello
Hello Edureka

Để làm rõ việc nạp chồng phương thức, bây giờ chúng ta có thể gọi phương thức Hello[] theo hai cách

obj.Hello[]
obj.Hello['Edureka']

Trong ví dụ trên, chúng ta đã tạo một phương thức có thể được gọi với ít đối số hơn so với định nghĩa cho phép. Ngoài ra, nó không giới hạn ở hai biến và phương thức của bạn có thể có nhiều biến hơn tùy chọn

Bây giờ hãy lấy một ví dụ khác để hiểu nạp chồng phương thức trong python

ví dụ 2

Trong ví dụ sau, chúng ta sẽ nạp chồng phương thức area. Nếu không có đối số thì nó trả về 0. Và, nếu chúng ta có một đối số thì nó trả về bình phương của giá trị và giả sử bạn đang tính diện tích hình vuông. Ngoài ra, nếu chúng ta có hai đối số thì nó trả về tích của hai giá trị và giả sử bạn đang tính diện tích hình chữ nhật

# class
class Compute:
# area method
def area[self, x = None, y = None]:
if x != None and y != None:
return x * y
elif x != None:
return x * x
else:
return 0
# object
obj = Compute[]
# zero argument
print["Area Value:", obj.area[]]
# one argument
print["Area Value:", obj.area[4]]
# two argument
print["Area Value:", obj.area[3, 5]]

Đoạn mã trên sẽ cho chúng ta đầu ra sau

Area Value: 0
Area Value: 16
Area Value: 15

Với điều này, chúng tôi đã đi đến cuối bài viết của chúng tôi. Tôi hy vọng bạn hiểu nạp chồng phương thức trong python là gì và nó hoạt động như thế nào

Để có kiến ​​thức chuyên sâu về python cùng với các ứng dụng khác nhau của nó, bạn có thể đăng ký khóa học trực tuyến về Python trực tiếp của Edureka với sự hỗ trợ 24/7 và quyền truy cập trọn đời

Có một câu hỏi cho chúng tôi?

Trong python, nạp chồng hàm được định nghĩa là khả năng hoạt động của hàm theo các cách khác nhau tùy thuộc vào số lượng tham số được truyền cho nó như 0, một, hai sẽ phụ thuộc vào cách xác định hàm. Chức năng quá tải cung cấp khả năng sử dụng lại mã, loại bỏ độ phức tạp và cải thiện tính rõ ràng của mã cho người dùng sẽ sử dụng hoặc làm việc trên mã đó. Quá tải hàm trong python có thể có hai loại, một là quá tải các hàm tích hợp và quá tải các hàm tùy chỉnh hoặc do người dùng xác định trong python. Chúng ta sẽ xem xét cả hai trong các phần dưới đây. Nói chung, không phải ngôn ngữ lập trình nào cũng hỗ trợ nạp chồng hàm nhưng trong trường hợp này, python hỗ trợ nạp chồng hàm

Gói phát triển phần mềm tất cả trong một[hơn 600 khóa học, hơn 50 dự án]

Giá
Xem khóa học

600+ Khóa học trực tuyến. hơn 50 dự án. Hơn 3000 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập Trọn đời
4. 6 [83.281 xếp hạng]

Cú pháp nạp chồng hàm trong Python

Cú pháp và ví dụ như sau

Bắt đầu khóa học phát triển phần mềm miễn phí của bạn

Phát triển web, ngôn ngữ lập trình, kiểm thử phần mềm và những thứ khác

cú pháp

Trong python, chúng ta có thể định nghĩa một phương thức theo cách mà nó có thể được gọi theo nhiều cách khác nhau bằng cách sử dụng số lượng tham số khác nhau. Chúng ta sẽ xem một ví dụ nạp chồng hàm có thể nhận 0 hoặc 1 đối số và cú pháp của nó như sau

Thí dụ

class World:
       def hello[self, name=None]:
              if name is not None:
                   print [“Hello “, name]
              else:
                   print[“Hello”]
obj = World        # calling function without any argument
obj.hello[“srinivas”] # calling function with an argument.

Trong ví dụ cú pháp trên, chúng ta đã tạo một lớp Thế giới với một phương thức/hàm hello trong đó chúng ta đặt đối số đầu tiên là Không để chúng ta có thể gọi hàm có hoặc không có đối số. Chúng tôi đã tạo một đối tượng của lớp Thế giới và sử dụng đối tượng này, chúng tôi sẽ gọi phương thức của nó bằng 0 hoặc một đối số. Để xem quá tải hàm hoạt động như thế nào, chúng ta sẽ gọi hàm có tham số bằng 0 là obj. hello[] và với một tham số là obj. hello[“srinivas”] và đầu ra của chương trình trên như sau. Ví dụ trên có tối đa một biến nhưng không giới hạn ở đó chúng ta có thể có một số tham số

đầu ra

 

Quá tải chức năng hoạt động như thế nào trong Python?

Hãy cho chúng tôi xem cách quá tải các chức năng hoạt động trong python bằng một ví dụ như dưới đây. Cho hàm tính diện tích hình vuông, hình chữ nhật

Mã số

def area[l, b]:
  c = l*b
  return c
def area[size]:
  c = size*size
  return c
area[4]
area[5,6]

đầu ra

Trong python, khi chúng ta định nghĩa 2 hàm trùng tên thì hàm mà chúng ta định nghĩa sau này chỉ là hàm hợp lệ trong python. Vì vậy, khi chúng tôi thực hiện khu vực [4], nó sẽ thực thi đúng nhưng khi chúng tôi thực hiện khu vực [5,6] sẽ báo lỗi cho biết hàm khu vực [] nhận chính xác một đối số. Vì vậy, theo mặc định, chức năng quá tải không có trong python nhưng có thể đạt được điều đó bằng cách sử dụng các trình trang trí, xác định các hàm bằng cách đặt các giá trị mặc định của tham số thành Không có

Hãy để chúng tôi có một ví dụ về nạp chồng hàm bằng cách định nghĩa một hàm với các giá trị tham số mặc định là Không có

Mã số

class Compute:
    def area[self, x=None, y=None]:
          if x!=None and y !=None:
              return x*y
          elif x!=None:
              return x*x
          else:
              return 0
obj = Compute[]
obj.area[]
obj.area[6]
obj.area[2,8]

đầu ra

Trong ví dụ trên, chúng ta đã định nghĩa một lớp Tính toán với một hàm được đặt tên là khu vực mà chúng ta có các giá trị tham số mặc định là Không để hàm có thể được gọi với các tham số 0, 1 và 2. Nếu chúng ta có một đối số thì hàm diện tích sẽ trả về giá trị 0 ở đầu ra của nó, nếu nó có một tham số thì hàm diện tích sẽ trả về bình phương của tham số và nếu nó có hai tham số thì hàm diện tích sẽ trả về tích của hai tham số như . Chúng ta đã tạo một đối tượng cho lớp Tính toán để chúng ta có thể truy cập hàm area[] với các tham số khác nhau. Ở đây chúng tôi gọi là obj. area[] cho đầu ra là 0, obj. khu vực [6] cho đầu ra là 36 và obj. area[2,8] cho kết quả là 16, là tích của 2 và 8

Bây giờ chúng ta sẽ xem nạp chồng hàm có sẵn với ví dụ nạp chồng hàm len[] như bên dưới

Quá tải chức năng tích hợp

Mã số

________số 8

Trong ví dụ trên, chúng tôi đã định nghĩa một lớp Mua trong đó nó có hàm tạo __init__ với các tham số giỏ là một danh sách và người tiêu dùng là một biến chuỗi và gán cho bản thân. Chúng ta có một hàm __len__ đang ghi đè hàm len[] tích hợp sẵn của python. Chúng tôi đã tạo một đối tượng mua của lớp Mua với các tham số sẽ được khởi tạo. Khi chúng tôi thực thi câu lệnh in mà chúng tôi đang gọi len[purchase] sẽ trả về 10 khi chúng tôi quá tải hàm len[] tích hợp sẵn của python. Nếu nó gọi hàm len[] tích hợp, nó sẽ báo lỗi vì một đối tượng không có bất kỳ hàm len[] nào

đầu ra

Chương trình trên khi nạp chồng hàm thành công

Đầu ra của chương trình trên, nếu chúng ta không thực hiện nạp chồng hàm là lỗi

LoạiLỗi. đối tượng của loại 'purchase' không có len[]

Ví dụ về nạp chồng hàm trong Python

Ví dụ một lớp sinh viên có hàm hello với tên tham số có giá trị mặc định là None như bên dưới

Ví dụ 1

Mã số

class Student:
       def sayHello[self, name=None]:
              if name is not None:
                     self.name = name
                     print[“Hey, ” , name]
              else:
                     print[“Hey”]
stu = Student[]
stu.sayHello[]
stu.sayHello[‘dasu’]

Trong ví dụ trên, chúng ta có một lớp Sinh viên với hàm sayHello[] trong đó giá trị tham số mặc định được đặt thành Không để hàm có thể được gọi với một trong hai tham số không, một nhưng không giới hạn đối với chúng. Chúng ta đã tạo một stu của lớp Student để chúng ta có thể truy cập hàm sayHello[]. Trong khi gọi stu. sayHello[] đầu ra của nó sẽ là “hey”, và trong khi gọi stu. sayHello[“dasu”] đầu ra của nó sẽ là “hey dasu”

đầu ra

Ví dụ #2

Quá tải chức năng bằng cách sử dụng trình trang trí quá tải trong python như bên dưới

Mã số

Hello
Hello Edureka
0

Trong ví dụ trên, bằng cách sử dụng hàm trang trí quá tải, nó có thể giải quyết giữa hàm gọi có đối số và hàm không có đối số. Chúng tôi đã khai báo một obj cho Nạp chồng lớp mà chúng tôi có thể truy cập chức năng của nó

Sự kết luận

Cuối cùng là tổng quan về nạp chồng hàm trong python. Cho đến giờ chúng ta đã thảo luận về định nghĩa nạp chồng hàm, cú pháp của nạp chồng hàm, cách thức hoạt động của nạp chồng hàm trong python, các loại nạp chồng hàm khác nhau như nạp chồng hàm tích hợp và nạp chồng hàm tùy chỉnh, và các ví dụ về nạp chồng hàm. Tôi hy vọng sau khi đọc bài viết này, bạn sẽ hiểu rõ hơn về nạp chồng hàm trong python, làm thế nào để nạp chồng hàm trong python theo nhiều cách khác nhau

Bài viết được đề xuất

Đây là hướng dẫn về Nạp chồng hàm trong Python. Ở đây chúng tôi thảo luận về tổng quan ngắn gọn về Nạp chồng hàm trong Python và các ví dụ của nó cùng với việc triển khai mã của nó. Bạn cũng có thể xem qua các bài viết được đề xuất khác của chúng tôi để tìm hiểu thêm –

Gõ quá tải Python là gì?

2021-05-29. Đôi khi các loại của một số biến có liên quan với nhau, chẳng hạn như “nếu x là loại A, y là loại B, nếu không thì y là loại C”. Gợi ý loại cơ bản không thể mô tả các mối quan hệ như vậy, làm cho việc kiểm tra loại trở nên rườm rà hoặc không chính xác. Thay vào đó, chúng ta có thể sử dụng @typing. quá tải để thể hiện đúng mối quan hệ kiểu .

Hàm nào quá tải == trong Python?

Trong Python, quá tải đạt được bằng cách ghi đè phương thức dành riêng cho toán tử đó, trong lớp do người dùng định nghĩa. Ví dụ: __add__[self, x] là phương thức dành riêng cho nạp chồng toán tử + và __eq__[self, x] dành cho nạp chồng ==.

Chúng ta có thể có 2 hàm với các tham số kiểu dữ liệu khác nhau trong quá tải không?

Không, bạn không thể quá tải một phương thức dựa trên kiểu trả về khác nhưng cùng kiểu đối số và số trong java .

Các chức năng Python có thể bị quá tải không?

Python không hỗ trợ nạp chồng hàm như các ngôn ngữ khác và tham số hàm không có kiểu dữ liệu.

Chủ Đề