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ì? Show
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] Xem video này trên YouTube Quá tải phương thứcnạ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 -880 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 Ghi đè phương thứcGhi đè 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 -881 là lớp cha của lớp -880 (được biểu thị bằng định nghĩa lớp Wizard -880) Do đó, lớp -880 kế thừa tất cả các phương thức và thuộc tính từ lớp cha -881 — bao gồm cả phương thức -883 Tuy nhiên, một -880 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 -885 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 Đ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 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ó. |