Tạo lớp kế thừa trong lập trình hướng đối tượng với Python
Lập trình Hướng Đối Tượng với Python

Danh sách bài học
Tạo lớp kế thừa trong lập trình hướng đối tượng với Python
Nội dung bài viết Học nhanh
Dẫn nhập
Ở các bài trước, bạn đọc đã được tìm hiểu sơ bộ về một số khái niệm cơ bản của một lớp như việc TẠO RA MỘT LỚP, DỰNG HÀM CONSTRUCTOR, GÁN THUỘC TÍNH CÁC PHƯƠNG THỨC.
Còn ở bài này, bạn đọc sẽ được biết tới cách kế thừa lớp chúng ta vừa viết. Nói nôm na đơn giản là ta không phải viết lại một nùi code.
Tại sao lại như vậy? từ từ ta sẽ dần tìm hiểu
Nội dung
Để theo dõi bài này một cách tốt nhất, bạn nên có có những kiến thức cơ bản về Python trong khóa LẬP TRÌNH PYTHON CƠ BẢN
Nếu bạn chưa có thời gian để học hết khóa trên thì hãy đảm bảo đã tìm hiểu những kiến thức sau đây
- BIẾN và CÁC KIỂU DỮ LIỆU CƠ BẢN của Python (Số, chuỗi, List, Tuple, Dict, Set, Range)
- Một số toán tử cơ bản (+, -, *, /, %)
- Khối lệnh điều kiện Khối vòng lặp như VÒNG LẶP FOR, VÒNG LẶP IF)
- HÀM
Và đương nhiên để học tiếp bài sau, bạn phải nắm vững kiến thức ở các bài trước:
- LỚP & ĐỐI TƯỢNG TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG PYTHON
- KHAI BÁO THUỘC TÍNH LỚP TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG PYTHON
- CÁC PHƯƠNG THỨC LỚP TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG PYTHON
Bạn và Kteam sẽ cùng tìm hiểu những nội dụng sau đây
- Tạo lớp kế thừa
- Kế thừa thuộc tính
- Kế thừa hàm constructor
- Kế thừa phương thức
Tạo lớp kế thừa
Bạn có biết siêu nhân gao chứ? Siêu nhân gao là siêu nhân, tuy nhiên nó cũng không phải siêu nhân. Ý mình là, lớp siêu nhân cũng có thể miêu tả được siêu nhân gao, tuy nhiên một siêu nhân gao còn cần phải có một vài thứ khác để phân biệt với các siêu nhân khác mà ta không thể viết nó chung một lớp với các siêu nhân khác được vì như vậy sẽ thiếu một số đặc điểm riêng.
Vậy ý tưởng của ta là tạo ra một lớp mới là một lớp siêu nhân gao. Lớp này có đặc điểm là một lớp nâng cấp của lớp siêu nhân. Có nghĩa là nó có nhiều thứ mà lớp siêu nhân chưa có.
Trước mắt là chúng ta cứ viết lại một lớp siêu nhân gao có đầy đủ những thứ của lớp siêu nhân có cái đã. Nhưng viết thế nào? Dễ mà, copy paste là được. Như vậy thì chẳng giống lập trình tí nào, vậy nên ở lập trình hướng đối tượng không riêng gì Python, nó cho phép bạn gọi là kế thừa, lấy những gì mà lớp cũ có. Vậy ta muốn tạo lớp siêu nhân gao kế thừa từ lớp siêu nhân thì như thế nào?
Mời bạn đọc xem ví dụ:
Kết quả:
Kế thừa thuộc tính
Tiếp theo, ta sẽ chỉnh sửa ở lớp siêu nhân một chút xem ở lớp siêu nhân gao có được “hưởng” từ đó hay không. Đơn giản bằng việc tạo một biến ở lớp siêu nhân
Kết quả:
Giả sử như bạn không muốn thừa hưởng giá trị từ lớp ta kế thừa thì phải làm sao? Đơn giản mà, ta viết lại thôi
Kết quả:
Kế thừa hàm constructor
Ta vừa mới thử thừa kế các thuộc tính ở lớp ta thừa kế (lớp cha), giờ ta thử thừa kế hàm constructor. Nếu lớp bạn thừa kế có hàm constructor thì khi bạn thừa kế lớp đó bạn nghiễm nhiên đã có một hàm constructor, và dùng như dùng ở lớp kế thừa. Mời bạn đọc xem ví dụ:
Kết quả:
Vậy câu hỏi đặt ra là ta muốn thêm một số thuộc tính nữa cho lớp siêu nhân gao thì sao? Giả sử ta cũng muốn thêm một thuộc tính nữa là sư thú mà siêu nhân gao đó có khi khởi tạo. Và muốn thay đổi thì ta viết lại thôi.
Kết quả
Bạn thấy rườm rà không nhỉ? Tại sao ta phải ghi lại gần như là hết cả hàm constructor như lớp cha. Có cách nào nhanh gọn giúp ta đỡ việc copy paste lại phương thức từ hàm constructor lớp cha mà chỉ cần thêm những thuộc tính mới thôi không? Có đấy. Ví dụ sau đây sẽ dùng phương pháp đó và đây là cách người ta hay dùng chứ không phải cách bên trên.
Kết quả:
Lưu ý: Đây là cách dùng cho hàm super cho Python 3.X, với Python 2.X sẽ có một chút khác biệt. Với ví dụ trên nếu là Python 2 thì bạn sẽ gọi hàm super như sau:
Kế thừa phương thức
Thế còn kế thừa những phương thức thì sao nhỉ ? Hoàn toàn tương tự như kế thừa thuộc tính. Nếu lớp trước có những phương thức gì, bạn được kế thừa toàn bộ. Nếu bạn muốn thêm thì viết thêm ở lớp kế thừa. Còn nếu muốn chỉnh sửa, thì ta viết lại phương thức đó:
Kết quả:
Kết luận
Bài này đã được tìm hiểu về kế thừa trong lập trình hướng đối tượng Python
Ở bài tiếp theo, ta sẽ tìm hiểu về SPECIAL METHOD - một loại phương thức trong lớp của Python nữa ngoài regular method, class method và static method.
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Tạo lớp kế thừa trong lập trình hướng đối tượng với Python dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Khóa học
Lập trình Hướng Đối Tượng với Python
Nhắc đến lập trình hướng đối tượng, mọi người nghĩ ngay tới những Java, C++, C#,… Và bên cạnh đó, tuy không nhiều, nhưng vẫn được nhắn đến đó chính là chú trăn thanh lịch Python.
Ở khóa học này, Kteam sẽ giới thiệu với các bạn những kiến thức cơ bản về Lập trình hướng đối tượng trong Python một cách dễ hiểu, từ đó bạn có thể ứng dụng kiến thức hướng đối tượng khi tiếp xúc với các framework, package của Python.
Không những thế, bạn cũng sẽ dễ dàng tiếp cận sâu hơn về lập trình hướng đối tượng khác khi bạn chuyển đổi sang lập trình bằng ngôn ngữ khác, vì như đã nói, hướng đối tượng có ở hầu hết mọi ngôn ngữ hiện nay và được ứng dụng rất rộng rãi
khóa này thiếu tài liệu quá ko có bt nếu kteam tạo nhiều bài tập hợp thì quá ok