Lớp mở rộng Python không kế thừa
Kế thừa là một nguyên tắc lập trình được thiết lập tốt và PHP sử dụng nguyên tắc này trong mô hình đối tượng của nó. Nguyên tắc này sẽ ảnh hưởng đến cách nhiều lớp và đối tượng liên quan với nhau Show
Ví dụ: khi mở rộng một lớp, lớp con sẽ kế thừa tất cả các phương thức, thuộc tính và hằng số công khai và được bảo vệ từ lớp cha. Trừ khi một lớp ghi đè các phương thức đó, chúng sẽ giữ nguyên chức năng ban đầu của chúng Điều này hữu ích cho việc xác định và trừu tượng hóa chức năng, đồng thời cho phép triển khai chức năng bổ sung trong các đối tượng tương tự mà không cần phải triển khai lại tất cả các chức năng được chia sẻ Các phương thức riêng của lớp cha không thể truy cập được đối với lớp con. Kết quả là, các lớp con có thể tự hiện thực lại một phương thức riêng tư mà không cần quan tâm đến các quy tắc kế thừa thông thường. Trước PHP 8. 0. 0, tuy nhiên, các hạn chế của Khả năng hiển thị của các phương thức, thuộc tính và hằng số có thể được nới lỏng, e. g. một phương pháp
Ví dụ #1 Ví dụ về kế thừa
Khả năng tương thích của loại trả về với các lớp bên trongTrước PHP 8. 1, hầu hết các lớp hoặc phương thức bên trong không khai báo kiểu trả về của chúng và mọi kiểu trả về đều được phép khi mở rộng chúng Kể từ PHP 8. 1. 0, hầu hết các phương thức nội bộ bắt đầu "tạm thời" khai báo kiểu trả về của chúng, trong trường hợp đó, kiểu trả về của các phương thức phải tương thích với kiểu gốc được mở rộng; . Lưu ý rằng việc thiếu khai báo trả về rõ ràng cũng được coi là chữ ký không khớp và do đó dẫn đến thông báo không dùng nữa Nếu kiểu trả về không thể được khai báo cho một phương thức ghi đè do lo ngại về khả năng tương thích giữa các phiên bản PHP, thì có thể thêm thuộc tính ReturnTypeWillChange để tắt thông báo ngừng sử dụng Trong Python, chúng ta có thể mở rộng một lớp để tạo một lớp mới từ lớp hiện có. Điều này trở nên khả thi vì Python hỗ trợ tính năng kế thừa Sử dụng tính kế thừa, chúng ta có thể tạo một lớp con với tất cả các tính năng và phương thức của lớp cha. Chúng ta cũng có thể thêm các tính năng mới vào lớp con ngoài những tính năng có trong lớp cha Chúng tôi thậm chí có thể ghi đè các tính năng của lớp cha mà chúng tôi không cần. Bạn sẽ học cách làm tất cả những điều đó khi xem qua bài viết này Nói một cách đơn giản, mở rộng một lớp có nghĩa là chúng ta muốn tạo một lớp mới hoặc lớp con từ một lớp cha hoặc lớp hiện có. Mở rộng một lớp cũng giống như kế thừa một lớp Hãy cho chúng tôi xem cách hoạt động của tính kế thừa trong Python Mở rộng một lớp bằng tính kế thừa trong PythonĐể kế thừa một lớp trong Python, chúng ta truyền tên của lớp đó làm tham số trong khi tạo lớp con cú pháp
Hãy để chúng tôi hiểu điều này với một ví dụ Đầu tiên chúng ta tạo một lớp cha, 2, với hai phương thức - 3 và 4. Phương thức 4 có một câu lệnh in in hương vị và màu sắc được hiển thị trong đầu ra
đầu ra Chúng ta tạo lớp con, 6 sẽ kế thừa lớp, 2. Để lớp 6 kế thừa lớp 2, chúng ta sẽ chuyển tên của lớp 2 làm tham số trong khi tạo lớp 6Chúng tôi đang sử dụng từ khóa 2 ở đây bởi vì chúng tôi chỉ kế thừa lớp, 2 và không thêm bất kỳ phương thức hoặc tính năng nào khác vào lớp con, 6. Lớp 5 hiện có các thuộc tính và phương thức giống như lớp 2Chúng ta có thể xác minh điều này bằng cách tạo một đối tượng của lớp 6 và sau đó thực thi phương thức 4 như được hiển thị trong hai dòng mã cuối cùng
đầu ra
Xem cách lớp 6 cũng thực thi phương thức 4 giống như lớp 2Hãy xem cách chúng ta có thể thêm nhiều phương thức và thuộc tính vào lớp con mới được tạo này Thêm chức năng Vanilla Pink Black forest Black 2 vào lớp con sau khi mở rộng lớpChúng ta có thể thêm một hàm 3 mới vào lớp con ngay cả khi kế thừa một lớp. Lưu ý rằng bất cứ khi nào một đối tượng của một lớp được tạo, hàm 3 sẽ tự động được gọiNgoài ra, việc thêm hàm 3 vào lớp con sẽ không sử dụng hàm 3 của lớp cha
Mặc dù phương thức 3 của lớp con ghi đè tính kế thừa của phương thức 3 của lớp cha, nhưng chúng ta vẫn có thể sử dụng phương thức 3 của lớp cha bằng cách gọi nó như thế này
Sử dụng hàm class Cake(Desserts): def __init__(self, flavor, color): self.flavor = flavor self.color = color 0 sau khi mở rộng một lớp trong PythonTrong Python, hàm 0 có thể được sử dụng để truy cập các thuộc tính và phương thức của lớp chaKhi có một 3 mới bên trong một lớp con đang sử dụng phương thức 3 của lớp cha, thì chúng ta có thể sử dụng hàm 0 để kế thừa tất cả các phương thức và thuộc tính từ lớp cha
Lưu ý rằng ở đây, chúng tôi không chỉ định tên của lớp cha; Đây là tất cả những kiến thức cơ bản về kế thừa trong Python Nhưng nếu chúng ta phải thêm nhiều thuộc tính hoặc phương thức vào lớp con thì sao? Thêm thuộc tính vào lớp con sau khi mở rộng lớp trong PythonChúng ta có thể thêm các thuộc tính bổ sung vào một lớp con ngoài những thuộc tính được kế thừa bởi lớp cha giống như chúng ta thêm bất kỳ thuộc tính nào khác. Xem cách một thuộc tính có tên là 6 được thêm vào lớp 6
Chúng tôi đã thêm một tham số nữa trong hàm 3 của lớp con. Ngoài ra, đừng quên truyền thêm một giá trị cho 6 trong khi tạo đối tượng của lớp 6, như thế này
Thêm phương thức vào lớp con sau khi mở rộng lớp trong PythonChúng tôi thêm một phương thức 1 trong lớp con bằng cách sử dụng từ khóa 2 trong mã bên dưới. Chúng tôi cũng chuyển từ khóa 3 làm tham số
Toàn bộ mã sẽ như sau 0đầu ra 1Lưu ý rằng việc thêm một phương thức có cùng tên với bất kỳ phương thức nào trong lớp cha sẽ ghi đè lên phương thức kế thừa Bạn có thể mở rộng lớp bằng Python không?Mục tiêu mở rộng một phương thức lớp trong Python có thể đạt được bằng Kế thừa . Một trong những lợi thế chính được cung cấp bằng cách mở rộng một phương thức là nó làm cho mã có thể tái sử dụng. Hơn nữa, nhiều lớp con có thể chia sẻ cùng một mã và thậm chí được phép cập nhật nó theo yêu cầu.
__ mới __ trong Python là gì?Python __new__() là phương thức khởi tạo kiểm soát việc tạo phiên bản mới . Nó được gọi đầu tiên và nó trả về một thể hiện của lớp mới. Python __init__() là phương thức khởi tạo để thiết lập các thuộc tính (i. e. , trạng thái) của phiên bản mới được tạo. Nó được gọi sau khi tạo và không trả về gì cả, tôi. e. , Không có.
Làm cách nào bạn có thể tăng cường thay vì thay thế hoàn toàn phương thức kế thừa Python?Một cách phức tạp hơn để tăng cường một phương thức kế thừa liên quan đến việc chuyển tiếp. Chuyển tiếp thư cho phép bạn bổ sung một phương thức được kế thừa theo cách mà phương thức đó có thể thực hiện hành động kế thừa và một số hành động mới.
Từ khóa nào dưới đây được sử dụng để mở rộng một lớp từ một lớp khác trong Python?Kế thừa cho phép chúng ta định nghĩa một lớp kế thừa tất cả các phương thức và thuộc tính từ một lớp khác. Lớp cha là lớp được kế thừa từ đó, còn được gọi là lớp cơ sở |