Bài tập Tổng kết Python OOP — Đưa kiến thức đã học vào code
Bốn bài cuối chương Python OOP: special method của Point, super() trong SavingsAccount, validate @property của Celsius, và đa hình area() cho hình. Bạn tự code để ôn lại.
Bài 1: Thiết kế class Point với special method
Xây một class Point đại diện cho tọa độ 2D. Bạn sẽ khởi tạo thuộc tính trong __init__, định nghĩa + giữa hai điểm hoạt động ra sao bằng __add__, và định hình những gì print() hiện ra với __str__ — ba special method làm việc cùng nhau.
Bài 2: Mở rộng tài khoản ngân hàng bằng kế thừa và super()
Kế thừa từ class cha BankAccount để xây SavingsAccount có thể áp dụng lãi suất. Pattern là kế thừa kinh điển: gọi constructor của lớp cha bằng super().__init__(...), rồi thêm các thuộc tính riêng của lớp con lên trên.
Bài 3: Kiểm tra nhiệt độ với @property
Viết một class Celsius từ chối các phép gán dưới độ không tuyệt đối (-273.15). Bạn sẽ dùng @property và một @value.setter để chèn việc kiểm tra ngay vào phép gán thuộc tính — đó là pattern đóng gói kinh điển.
t.value = X trông giống phép gán thường, nhưng nó đi qua setter, hàm này kiểm tra giá trị trước. Ngoài khoảng → ValueError, trong khoảng → lưu vào _value.Bài 4: Dùng đa hình để tính diện tích trong một vòng lặp
Cho hai class khác nhau một method cùng tên (area()), đặt instance của chúng vào một list, và xử lý chúng bằng một vòng lặp for. Bên gọi không quan tâm class nào là class nào — đó là đa hình ở dạng đơn giản nhất.
shape.area() trên mỗi phần tử trong list, method khớp với type thật của phần tử được tự động chọn.Bạn đã hoàn thành tốt phần này
Đó là kết thúc của Python OOP. Bạn đã đi qua thiết kế class và instance, các special method như __init__ / __add__ / __str__, kế thừa với super(), đóng gói với @property, đa hình, câu lệnh with, và type hint — gần như mọi công cụ bạn cần để gói dữ liệu và hành vi vào một type duy nhất. Giờ bạn có thể tự định nghĩa kiểu của mình, gắn method vào chúng, và xử lý nhiều kiểu qua một interface chung.
Chương tiếp theo, Python nâng cao, là về vượt qua một file đơn lẻ: tổ chức module và package, và dùng thư viện chuẩn — datetime, os, re, json, collections, dataclasses, asyncio, và nhiều hơn nữa — để xây dựng kiểu xử lý mà bạn sẽ thực sự gặp trong code production.