Thừa kế phân cấp trong python là gì?
Trong bài học trước, bạn đã đề cập đến các đối tượng và kế thừa. Trong bài học này, bạn sẽ tìm hiểu sâu hơn về ghi đè phương thức và xem cách sử dụng 1 để truy cập các phương thức cha được ghi đè Show
00. 00 Ở bài trước mình đã hướng dẫn các bạn sử dụng tính kế thừa đối tượng trong Python. Trong bài học này, tôi sẽ chỉ cho bạn cách sử dụng 1 để truy cập các phương thức trong đối tượng cha theo hệ thống phân cấp thừa kế. Nếu bạn đang viết mã cùng với tôi, tôi vẫn đang sử dụng 3 cho mã của mình. Trước hết, tôi sẽ thêm 4 vào 300. 21 Cũng giống như 1, 4 chỉ yêu cầu một 3 để khởi tạo và vì tôi đang thừa kế từ 1 nên tôi không phải xác định lại 5. Tôi chỉ có thể sử dụng của 100. 32 4 có hai phương thức không có trong cha mẹ của nó 1. Đầu tiên là 9, và thứ hai là 000. 40 Cả hai đều sử dụng hàm 1 từ cha mẹ, nhưng tôi đang chỉ ra hai cách khác nhau để hoàn thành cùng một việc. Trong 9, 3 được gọi là. Python tìm kiếm một phương thức có tên là 1 bên trong 400. 55 Khi không tìm thấy, nó sẽ vào 1 để tìm kiếm điều tương tự. Nó cũng sẽ không tìm thấy nó trong 1. Nếu bạn còn nhớ, 1 được định nghĩa trong 9. Khi tìm thấy nó trong 9, nó sẽ trả về kết quả và sau đó chúng tôi nhân kết quả đó với 81 để có được diện tích bề mặt của chúng tôi. 0 đang làm một điều rất giống nhau. Tuy nhiên, trong trường hợp này, thay vì nhìn vào đối tượng hiện tại, nó nhìn vào siêu đối tượng, có nghĩa là nó nhìn vào 1 cho 101. 23 Nó vẫn không tìm thấy nó. Nó đi lên từ đó đến 9 và sau đó tìm thấy nó ở đó và cung cấp cho chúng tôi 86 cho tập. Và bây giờ nếu chúng tôi mở REPL, chúng tôi có thể nhập 4 như trước đây, tạo 4 với 3 của 50,01. 39 gọi cho 9,01. 41 gọi cho 0, và chúng tôi nhận được kết quả như mong đợi01. 46 Vì vậy, hãy xem lại cách các phương thức được gọi trên các đối tượng trong Python. Trước hết, Python nhìn vào đối tượng hiện tại để xem liệu một phương thức có tên được gọi có tồn tại hay không. Nếu vậy, tuyệt vời, nó gọi nó 01. 58 Nếu không, nó sẽ chuyển đến cha của đối tượng đó để xem có phương thức nào có cùng tên đó không. Nó tiếp tục làm điều này cho đến khi nó tìm thấy nó và gọi nó, hoặc nó hết chuỗi thừa kế. Nếu nó hết chuỗi thừa kế, nó sẽ ném một 53. Để cho bạn thấy điều này trong thực tế, tôi sẽ mở 3 và sửa đổi hình dạng của 902. 20 Tôi đang thêm một phương thức có tên là 56 không làm gì khác ngoài việc trả về một chuỗi đơn giản có từ 57 trong đó. Bên trong REPL, tôi sẽ nhập một 9 và tạo nó, rồi gọi 5602. 33 Nó trả về chuỗi 57. Và điều gì sẽ xảy ra nếu bạn làm điều tương tự với 1? 02. 44 Để thay đổi điều này, mã bên trong của 1 cũng sẽ phải thay đổi. Để 1 trả về một kết quả nhạy cảm hơn, tôi đã ghi đè phương thức 56 của nó. Sau đó tôi đã làm điều tương tự cho 402. 56 Bây giờ từ REPL, nếu tôi tạo một 9, không có gì thay đổi đối với nó—nó vẫn báo cáo 57. Nhưng khi 11 được gọi, bởi vì có một phương thức 56 trên chính đối tượng 1, nên phương thức bị ghi đè sẽ được gọi. Tương tự như vậy đối với 4, phương thức 4 bị ghi đè được gọi và bây giờ kết quả trông giống như những gì bạn có thể mong đợi. Giả sử từ bên trong đối tượng 4, bạn muốn truy cập phương thức 56 của đối tượng 1. 1 là thứ sẽ cho phép bạn làm điều đó03. 27 1 cung cấp cho bạn quyền truy cập vào đối tượng gốc và các phương thức bên trong. Nó có thể được gọi theo một số cách khác nhau—ngay lập tức mà không có bất kỳ tham số nào, nhưng cũng có hai tham số. Với hai tham số, cần có một 11 và một 12. Trong trường hợp này, bạn thậm chí không cần phải ở bên trong đối tượng để nó hoạt động03. 46 Nếu bạn đang ở trong một lớp, thì 1 không có bất kỳ tham số nào thực sự chỉ là lối tắt cho đối tượng 14 và đối tượng 15. Hãy xem nó trong thực tế bằng cách nhìn vào đối tượng 404. 00 Nhập 4, tạo nó, đặt tên cho nó là 56, bạn sẽ nhận thấy 19. Chúng tôi đã thấy điều này trước đây. Bây giờ, nếu tôi gọi 1 đi qua lớp 4 và đối tượng 32 cho 56,04. 14 Python đi lên cha của 4, là 1, và gọi phương thức của nó. Tương tự như vậy, nếu chúng ta truyền nó vào với lớp 1 và đối tượng 32, nó sẽ chuyển đến cha của 1 và trả về kết quả từ đó04. 33 Đây là cách 1 cho phép bạn lấy bất kỳ phương thức nào bị ghi đè trong hệ thống phân cấp thừa kế. Hãy xem đây là một ví dụ bên trong một phương thức trong lớp 4. Phương thức mới này 41 trả về một chuỗi báo cáo “Tôi là ai, và tôi là con của. ” 15 trả về 56 cho 4, và 1 trong trường hợp này sẽ trả về 56 của lớp 1. Bạn sẽ nhận thấy rằng tôi đang sử dụng phiên bản dạng ngắn của 1 ở đây, không cần phải chỉ định lớp 4 và 15, vì tôi đang ở trong một phương thức của đối tượng05. 12 Hãy tạo 32. Khi 41 được gọi, 03 được báo cáo, gọi 56 của 4 và 06 của 1. Cho đến nay, tất cả các ví dụ của chúng tôi đều là kế thừa đơn lẻ. Trong bài tiếp theo, tôi sẽ chỉ cho bạn cách sử dụng đa thừa kế và những phức tạp phát sinh từ đóBrandon vào tháng 1. 29, 2020 cảm ơn vì video. Một vấn đề, mặc dù. Tôi liên tục nhận được AttributeError khi gọi khối. âm lượng(). loại đối tượng 'siêu' không có thuộc tính 'khu vực' Thể hiện khối lập phương của Cube có thuộc tính "khu vực", nhưng nó gây ra lỗi khi tìm kiếm nó trong (các) phần tử cha. Khi tôi thay thế 08 bằng 09, khối lập phương. âm lượng () hoạt động tốt. Bất kỳ suy nghĩ?Brandon vào tháng 1. 29, 2020 Có vẻ như sự cố có thể xảy ra với việc nhập vào thiết bị đầu cuối iPython. Khi tôi chạy mã trong Cửa sổ tương tác Python trong Mã VS thì không sao, nhưng gọi khối lập phương. volume() sau khi nhập qua thiết bị đầu cuối (vào iPython) sẽ báo lỗi. Ồ tốt, không phải lo lắng. Cảm ơn Đánh dấu vào ngày 15 tháng 6 năm 2020 Xin chào mọi người, xin lỗi nếu câu hỏi này là ngu ngốc. Tôi hơi khó khăn, khi tôi nhập lớp Cha mẹ thì tất cả đều ổn nhưng nếu tôi nhập lớp con thì tôi nhận được khu vực này
Christopher Trudeau Nhóm RP vào ngày 16 tháng 6 năm 2020 Xin chào UgandanGuy, Tôi chỉ đoán thôi vì tôi không thể thấy mã của bạn, nhưng nếu bạn kế thừa từ Hình chữ nhật thay vì Hình vuông, bạn có thể thấy thông báo này. Hình chữ nhật nhận hai đối số (có nghĩa là 3 vì “self”), trong khi Square chỉ nhận một (có nghĩa là 2 vì “self”) Kiểm tra kỹ bạn có lớp Khối lập phương (Hình vuông). . . …ct Thomas J Foolery vào ngày 23 tháng 6 năm 2020 Cảm ơn Christopher. tôi thích video. Mình làm bên bạn nhưng ko copy nguyên văn. Đồ chơi nhỏ của tôi trông như thế này ________số 8 Đầu ra trông như thế này Rectangle of length 2 and width 4 has area 8 and perimiter 12 Square with sides = 6 has area 36 and perimeter Quá trình kết thúc với mã thoát 0 Có vẻ như phương pháp chu vi không được kế thừa như mong đợi. Tôi đang sử dụng PyCharm với Python 3. 6. Bất kỳ suy nghĩ? Christopher Trudeau Nhóm RP vào ngày 23 tháng 6 năm 2020 Chào Thomas, Bạn đã bỏ qua dấu ngoặc gọi hàm đến chu vi. Đầu ra mà bạn đang thấy là Python cho bạn biết về hàm chứ không phải gọi hàm Thay đổi dòng của bạn thành này 8Và bạn nên tốt để đi davevikram vào ngày 23 tháng 6 năm 2020 Xin chào Chris, Tôi đã làm theo hướng dẫn và mọi thứ đều ổn cho đến khi tôi tạo lớp Cube và tôi không thể vượt qua lỗi này. Tôi thậm chí đã sao chép mã từ trên và vẫn tiếp tục gặp lỗi này Nhập Lỗi. không thể nhập tên 'Cube'
5Dan B vào tháng 11. 13, 2020 davevikram là bạn trong REPL? Dan B vào tháng 11. 13, 2020 lúc 4. 44 bạn nói, 10, nhưng tôi nghĩ trong bối cảnh này, ý bạn là 11?Christopher Trudeau Nhóm RP vào tháng 11. 13, 2020 Chào Đan, Trước hết, không, tôi không sử dụng REPL. Tôi đã cắt và dán mã từ REPL vào một slide. Bạn đúng là REPL cơ sở không cho phép nhập lại, vì vậy nếu bạn cần nhập lại, bạn sẽ phải khởi động lại Nhận xét trong mã mẫu 10thực sự đúng. Lệnh gọi super() là lối tắt của lệnh gọi super với lớp hiện tại. Trong ví dụ Cube là lớp hiện tại. Kết quả của cuộc gọi này là phương thức của Square. Hãy coi super() là viết tắt của “parent of”. Trong trường hợp này, chúng tôi đang tìm kiếm "cha mẹ của Cube", đó là Square. Gọi đến phím tắt “super()” là viết tắt của “parent of self’s class” Konstantinos vào tháng 10. 5, 2022 Xin chào, tôi đang cố gắng hiểu cách thích hợp để gọi các thuộc tính cấp lớp của lớp cha từ một phương thức trong lớp con Trong ví dụ sau tôi thấy có thể sử dụng 13, 14, 15 để lấy thuộc tính color từ lớp cha trong phương thức 16 của lớp con. Tôi đã tự hỏi cuộc gọi nào là hợp lệ nhất hoặc liệu chúng có tương đương nhau không? 3Cảm ơn Christopher Trudeau Nhóm RP vào tháng 10. 5, 2022 Xin chào Konstantinos, Ý tưởng đằng sau kế thừa đối tượng là đứa trẻ lấy mọi thứ từ cha mẹ. Lý do duy nhất để sử dụng 17 là nếu bạn đang cố gắng đạt được điều gì đó ở cha mẹ chứ không phải ở con cái. Điều này chỉ xảy ra nếu bạn đang ghi đèBạn hiếm khi thấy 17 được sử dụng với các thuộc tính, nó hầu như luôn được sử dụng với các phương thức mà cha mẹ có cách triển khai khác với con. Cách sử dụng phổ biến nhất khi ghi đè 19 trong đối tượng con và muốn gọi phương thức cùng tên của cha mẹBạn có thể sử dụng 17 với các thuộc tính, ví dụ nếu cả 21 và 9 đều khai báo 23. Nhưng trong thực tế, nếu bạn đang thay đổi các loại hằng số đó, có lẽ bạn muốn có một biến thể hiện hơn là một cấp độ lớp. Tôi chắc rằng có những trường hợp ngoại lệ ngoài kia, tôi chỉ không thấy nó được sử dụng thường xuyên trong mã
Thừa kế phân cấp là gì?Kế thừa phân cấp mô tả tình huống trong đó một lớp cha được kế thừa bởi nhiều lớp con . Một kiểu kế thừa trong đó nhiều hơn một lớp được kế thừa từ một lớp cha hoặc lớp cơ sở được gọi là kế thừa phân cấp.
Kế thừa phân cấp giải thích với ví dụ là gì?Trong kế thừa phân cấp, tất cả các tính năng phổ biến trong các lớp con đều được bao gồm trong lớp cơ sở . Ví dụ: Vật lý, Hóa học, Sinh học được lấy từ lớp Khoa học. Tương tự, Dog, Cat, Horse có nguồn gốc từ lớp Animal.
Làm thế nào để python thực hiện kế thừa phân cấp?Kế thừa phân cấp trong Python . Chương trình #Python thể hiện tính kế thừa phân cấp #Lớp cơ bản lớp thú cưng def __init__(self, pet_type, name, bdate) bản thân. pet_type = pet_type bản thân. tên = tên bản thân. ngày = ngày def chi tiết (bản thân) Kế thừa lai trong python là gì?Thừa kế kết hợp là sự pha trộn của nhiều loại thừa kế . Lớp được dẫn xuất từ hai lớp như trong đa kế thừa. Tuy nhiên, một trong các lớp cha không phải là lớp cơ sở. Nó là một lớp dẫn xuất. Tính năng này cho phép người dùng sử dụng tốt nhất tính năng kế thừa. |