Hướng dẫn hàm khởi tạo python
Trong bài này, chúng ta sẽ tìm hiểu về hàm khởi tạo (constructor) của class trong Python. Đây là bài tiếp theo của bài Xây dựng lớp (class) và tạo đối tượng (object) trong Python. Các bạn nên đọc trước bài này để nắm được các kiến thức cơ bản về class và object trong Python trước khi tìm hiểu về hàm __init__() trong Python. Show
Hàm Cú pháp của hàm
Trong đó,
Ví dụ bên dưới là tạo một class Cat với thuộc tính của lớp là species và các thuộc tính của từng đối tượng là name và color.
Kết quả
Trong lớp Cat, thuộc tính species là thuộc tính của lớp. Thuộc tính của lớp sẽ có giá trị giống nhau cho tất cả đối tượng của lớp được tạo ra. Các thuộc tính name và color là các thuộc tính của đối tượng. Các thuộc tính của đối tượng sẽ khác nhau giữa các đối tượng được tạo ra của lớp đó. Chúng ta có thể xóa các thuộc tính của đối tượng với từ khóa del.
Kết quả
Nhưng lưu ý, Python không cho phép xóa thuộc tính của class.
Kết quả
2. Các dạng hàm khởi tạo của class trong PythonTrong Python, có 3 dạng hàm khởi tạo là:
2.1. Hàm khởi tạo mặc định (default constructor)Khi định nghĩa một class, nếu chúng ta không định nghĩa hàm khởi tạo __init__() thì tự tạo hàm này cho chúng ta. Hàm khởi tạo này được gọi là hàm khởi tạo mặc định (default constructor). Default constructor sẽ không thực thi bất cứ nhiệm vụ nào. Lưu ý: Default constructor sẽ được Python tự động thêm vào class của chúng ta khi biên dịch. Nếu chúng ta đã định nghĩa một hàm khởi tạo trong class thì default constructor sẽ không được thêm vào class.
Kết quả
2.2. Hàm khởi tạo không có tham số (non-parametrized constructor)Hàm __init__() không có bất kỳ tham số nào ngoài tham số self được gọi là hàm khởi tạo không có tham số (non-parametrized constructor). Hàm khởi tạo dạng này được sử dụng để tạo các đối tượng với các giá trị mặc định. Tức là các đối tượng khi mới được tạo ra thì hoàn toàn giống nhau.
Kết quả
2.3. Hàm khởi tạo có tham số (parameterized constructor)Hàm __init__() được định nghĩa có các tham số khác ngoài tham số self được gọi là hàm khởi tạo có tham số (parameterized constructor). Với parameterized constructor, chúng ta có thể truyền các giá trị khác nhau khi khởi tạo các đối tượng của một class.
Kết quả
2.4. Hàm constructor với các giá trị mặc định (default values)Python cho phép chúng ta tạo một hàm khởi tạo với các giá trị mặc định (default values). Default values sẽ được sử dụng nếu chúng ta không truyền đối số cho hàm khởi tạo khi tạo đối tượng.
Kết quả
Lưu ý: Các tham số có giá trị mặc định phải được đặt bên phải các tham số không có giá trị mặc định nếu không Python sẽ báo lỗi.
3. Một số lưu ý khi sử dụng hàm __init__() trong Python3.1. Python không cho phép có nhiều hơn một hàm __init__() trong class
Kết quả
3.2. Python không cho phép hàm __init__() return giá trị
Kết quả |