Hướng dẫn can we overload method in python? - chúng ta có thể quá tải phương thức trong python không?

Giống như các ngôn ngữ khác [ví dụ: quá tải phương thức trong C ++] làm, Python không hỗ trợ quá tải phương thức theo mặc định. Nhưng có nhiều cách khác nhau để đạt được quá tải phương pháp trong Python. & NBSP;

Vấn đề với quá tải phương pháp trong Python là chúng ta có thể quá tải các phương thức nhưng chỉ có thể sử dụng phương thức được xác định mới nhất. & NBSP;

Python3

def product[a, b]:

    p = a

11
Hi Geeks
0
11
Hi Geeks
1

    

11
Hi Geeks
3
11
Hi Geeks
4

def

11
Hi Geeks
6

    p = a

11
Hi Geeks
0
11
Hi Geeks
1____1010____24

    

11
Hi Geeks
3
11
Hi Geeks
4

pip3 install multipledispatch
8
pip3 install multipledispatch
9
6
12
17.985999999999997
0
6
12
17.985999999999997
1
6
12
17.985999999999997
0
6
12
17.985999999999997
1
6
12
17.985999999999997
4

Output: 

100

Trong mã trên, chúng tôi đã xác định hai phương thức sản phẩm, nhưng chúng tôi chỉ có thể sử dụng phương thức sản phẩm thứ hai, vì Python không hỗ trợ quá tải phương thức. Chúng tôi có thể xác định nhiều phương thức cùng tên và các đối số khác nhau, nhưng chúng tôi chỉ có thể sử dụng phương thức được xác định mới nhất. Gọi phương thức khác sẽ tạo ra một lỗi. Giống như ở đây Gọi & NBSP; sẽ tạo ra một lỗi vì phương thức sản phẩm được xác định mới nhất có ba đối số.

will produce an error as the latest defined product method takes three arguments.

Do đó, để khắc phục vấn đề trên, chúng ta có thể sử dụng các cách khác nhau để đạt được quá tải phương pháp.

Phương pháp 1 [không phải là phương pháp hiệu quả nhất]:

Chúng ta có thể sử dụng các đối số để làm cho cùng một chức năng hoạt động khác nhau, tức là theo các đối số.

Python3

def

6
12
17.985999999999997
6
11
Hi Geeks
0
6
12
17.985999999999997
8

    def0 def1==def44545

def6def7= def9

    def0 def1==__5555545

def6def7=    0

        2     3    4     5

def6def7= def7p 0 p 1

    

11
Hi Geeks
3p 4

p 5def4

6
12
17.985999999999997
0
6
12
17.985999999999997
1
6
12
17.985999999999997
0=0
6
12
17.985999999999997
4

p 5product[a, b]:5

6
12
17.985999999999997
0=5
6
12
17.985999999999997
0=7
6
12
17.985999999999997
4

Output: 

11
Hi Geeks

Vấn đề với mã trên là làm cho mã trở nên phức tạp hơn với nhiều câu lệnh IF/ELSE và không phải là cách mong muốn để đạt được quá tải phương thức.

Phương pháp 2 [hiệu quả]:

Bằng cách sử dụng nhiều công văn trang trí & nbsp;

Nhiều người trang trí công văn có thể được cài đặt bởi: & nbsp;

pip3 install multipledispatch

Python3

=9 a 0a 1 a 2

a 3a 4a 5

6
12
17.985999999999997
0a 5
6
12
17.985999999999997
4

def

11
Hi Geeks
00

    

11
Hi Geeks
3
11
Hi Geeks
09

a 3a 4a 5

6
12
17.985999999999997
0a 5
6
12
17.985999999999997
0a 5
6
12
17.985999999999997
4

def

11
Hi Geeks
19

    

11
Hi Geeks
02=
11
Hi Geeks
23
11
Hi Geeks
0
11
Hi Geeks
25__

    

11
Hi Geeks
3
11
Hi Geeks
09

a 3a 4

11
Hi Geeks
33
6
12
17.985999999999997
0
11
Hi Geeks
33
6
12
17.985999999999997
0
11
Hi Geeks
33
6
12
17.985999999999997
4

def

11
Hi Geeks
19

    

11
Hi Geeks
02=
11
Hi Geeks
23
11
Hi Geeks
0
11
Hi Geeks
25__

    

11
Hi Geeks
3
11
Hi Geeks
09

pip3 install multipledispatch
8
11
Hi Geeks
53
6
12
17.985999999999997
0
11
Hi Geeks
55
11
Hi Geeks
56

pip3 install multipledispatch
8
11
Hi Geeks
53
6
12
17.985999999999997
0
11
Hi Geeks
55
6
12
17.985999999999997
0
11
Hi Geeks
53
11
Hi Geeks
56

pip3 install multipledispatch
8
11
Hi Geeks
65
6
12
17.985999999999997
0
11
Hi Geeks
67
6
12
17.985999999999997
0
11
Hi Geeks
69
11
Hi Geeks
56

Output: 

6
12
17.985999999999997

Trong phần phụ trợ, người điều phối tạo một đối tượng lưu trữ các triển khai khác nhau và trong thời gian chạy, nó chọn phương thức phù hợp là loại và số lượng tham số được truyền. & NBSP;
 


Bạn có thể quá tải một phương pháp trong Python không?

Python không hỗ trợ quá tải chức năng.Khi chúng tôi xác định nhiều hàm cùng tên, phần sau luôn ghi đè trước và do đó, trong không gian tên, sẽ luôn có một mục nhập duy nhất so với mỗi tên hàm.. When we define multiple functions with the same name, the later one always overrides the prior and thus, in the namespace, there will always be a single entry against each function name.

Tại sao không thể quá tải phương thức trong Python?

Không thể quyết định thực hiện phương thức nào dựa trên loại trả về, do đó, quá tải là không thể chỉ bằng cách thay đổi loại trả về của phương thức.

Chúng ta có thể quá tải phương thức init trong Python không?

Nếu hàm tạo được viết hai lần với các chữ ký khác nhau, chúng tôi gọi quá tải hàm tạo.Khái niệm về quá tải phương pháp và quá tải hàm tạo có thể có trong các ngôn ngữ khác như Java và C ++.Trong phương pháp Python và hàm tạo, quá tải là không thể.overloading is not possible.

Bạn có thể quá tải một phương pháp?

Quá tải phương thức có thể đạt được bằng cách sau: bằng cách thay đổi số lượng tham số trong một phương thức.Bằng cách thay đổi thứ tự của các tham số trong một phương thức.Bằng cách sử dụng các loại dữ liệu khác nhau cho các tham số.By changing the number of parameters in a method. By changing the order of parameters in a method. By using different data types for parameters.

Bài Viết Liên Quan

Chủ Đề