Phương pháp ghi đè python với các đối số khác nhau

Ghi đè phương thức so với nạp chồng trong Python—sự khác biệt là gì?

  • nạp chồng phương thức. tạo một phương thức có thể được gọi với các đối số khác nhau, chẳng hạn như m()m(1, 2, 3)
  • Ghi đè phương thức. ghi đè chức năng của một phương thức được định nghĩa trong lớp cha

Trong nạp chồng phương thức, các phương thức trong một lớp nhất định có cùng tên nhưng chữ ký khác nhau (= danh sách đối số). Trong ghi đè phương thức, các phương thức có cùng tên và cùng chữ ký và các phương thức của lớp con sẽ ghi đè các phương thức của lớp cha

Video sau đây giải thích chi tiết hơn về bài viết này

Ghi đè Python so với Quá tải [Giải thích đơn giản]

Phương pháp ghi đè python với các đối số khác nhau

Xem video này trên YouTube

Quá tải phương thức

nạp chồng phương thức. tạo một phương thức có thể được gọi với các đối số khác nhau

Đây là một ví dụ cho quá tải Phương thức

# Method overloading in Python

class Wizard:

    def __init__(self, mana):
        self.mana = mana

    def stupor(self, other, damage=50):
        if self.mana>100:
            other.mana -= damage


tom = Wizard(112)
dumbledore = Wizard(151)

# duell
tom.stupor(dumbledore)
dumbledore.stupor(tom, 200)
for i in range(10):
    tom.stupor(dumbledore)

# Tom Mana:
print(tom.mana)

# Dumbledore Mana:
print(dumbledore.mana)

Tập thể dục. Đầu ra của mã này là gì?

Trình hướng dẫn lớp định nghĩa một thuộc tính thể hiện 'mana' đại diện cho mức năng lượng của thể hiện

-88
101
0 tương ứng. Nếu mức mana cạn kiệt, họ không thể thực hiện các trò ảo thuật nữa

Trò ảo thuật sững sờ làm giảm mức năng lượng của đối thủ (được gọi là khác) nếu đối tượng được gọi còn đủ năng lượng

Bạn có thể gọi phương thức với hai cài đặt tham số thay thế. Đầu tiên, bạn có thể gọi nó chỉ bằng cách tham chiếu đến phiên bản trình hướng dẫn khác. Thứ hai, bạn có thể gọi nó bằng cách chỉ định cả tham chiếu đến trình hướng dẫn khác VÀ thiệt hại mà nó gây ra

Bằng cách này, bạn “quá tải” định nghĩa của phương thức. Nó thực hiện những thứ khác nhau khi được gọi khác nhau

Điều này được thể hiện trong đầu ra của câu đố. Giả sử, Pháp sư Tom chiến đấu chống lại Pháp sư Dumbledore. Tom tấn công đầu tiên. Anh ta giảm mức năng lượng đi 50 điểm ("sát thương" mặc định khi không được xác định rõ ràng). Cụ Dumbledore đánh trả bằng cách giảm 200 điểm năng lượng của Tom trong một đòn đánh. Tại thời điểm này, Tom còn lại -88 mana, vì vậy cho dù anh ta có cố gắng làm hại cụ Dumbledore bao nhiêu lần đi chăng nữa - điều đó cũng không thay đổi được gì

Đây là kết quả của câu đố mã

-88
101

Ghi đè phương thức

Ghi đè phương thức. ghi đè chức năng của một phương thức được định nghĩa trong lớp cha

Đây là một ví dụ về ghi đè phương thức

# Method overriding in Python

class Muggle:

    def convince(self, other, thing):
        print("Please, " + other + ", " + thing) 

class Wizard(Muggle):

    def convince(self, other, thing):
        print("Imperius {" + other + ", " + thing + "}")


petunia = Muggle()
harry = Wizard()

petunia.convince("Harry", "clean up")
harry.convince("Dudley", "clean up")

Tập thể dục. Đầu ra của câu đố mã này là gì?

Chúng tôi sử dụng một ví dụ về Harry Potter. Lớp

-88
101
1 là lớp cha của lớp
-88
101
0 (được biểu thị bằng định nghĩa lớp Wizard
-88
101
0)

Do đó, lớp

-88
101
0 kế thừa tất cả các phương thức và thuộc tính từ lớp cha
-88
101
1 — bao gồm cả phương thức
-88
101
3

Tuy nhiên, một

-88
101
0 có những cách khác để thuyết phục ai đó làm điều gì đó. Do đó, chúng ta OVERRIDE phương thức
-88
101
5 trong lớp con. Về bản chất, chúng tôi thay thế chức năng bằng chức năng mới cụ thể hơn cho lớp con

Khi Thuật sĩ Harry thực thi phương thức thuyết phục, nó sử dụng chức năng của phương thức được xác định trong mô tả lớp Thuật sĩ

Please, Harry, clean up
Imperius {Dudley, clean up}

Đi đâu từ đây?

Bạn cần biết từ vựng của một ngôn ngữ tự nhiên để giao tiếp với người khác. Tương tự, bạn cần biết cú pháp ngôn ngữ lập trình trước khi có thể giao tiếp hiệu quả với máy tính của mình và các lập trình viên khác.

Tham gia cùng 55.235 lập trình viên đầy tham vọng trong danh sách email của tôi — và học từ vựng Python từ đầu


Phương pháp ghi đè python với các đối số khác nhau

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners (NoStarch 2020), đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Phương thức ghi đè có thể có các tham số khác nhau không?

Không, trong khi ghi đè một phương thức của siêu hạng, chúng ta cần đảm bảo rằng cả hai phương thức đều có cùng tên, cùng tham số và cùng kiểu trả về, nếu không cả hai sẽ được coi là các phương thức khác nhau.

Chúng ta có thể thay đổi các đối số trong phương thức trong khi ghi đè phương thức không?

Theo quy tắc, khi ghi đè một phương thức trong lớp con, các tham số không được thay đổi và phải giống như trong lớp cha.

Chúng ta có thể ghi đè một phương thức bằng một phương thức khác trong cùng một lớp không?

Câu trả lời là Không, bạn không thể ghi đè cùng một phương thức trong một lớp .

Một lớp con có thể ghi đè một phương thức không?

Một lớp con có thể ghi đè hoàn toàn việc triển khai một phương thức kế thừa hoặc lớp con có thể nâng cao phương thức bằng cách bổ sung chức năng cho nó.