Constructor trong Python
Constructor trong Python là một loại phương thức (hàm) đặc biệt được sử dụng để khởi tạo các thể hiện của lớp. Constructor có thể có hai loại. Constructor tham số và constructor không tham số. Để tìm hiểu về cách khởi tạo, các hàm tích hợp sẳn,...mời bạn đọc tham khảo bài viết dưới đây của eLib.
Mục lục nội dung
1. Tạo contructor trong Python
Trong python, phương thức __ init __ mô phỏng contructor của lớp. Phương thức này được gọi khi lớp được khởi tạo. Chúng ta có thể chuyển bất kỳ số lượng đối số nào tại thời điểm tạo đối tượng lớp, tùy thuộc vào định nghĩa __ init __. Nó chủ yếu được sử dụng để khởi tạo các thuộc tính của lớp. Mỗi lớp phải có một constructor.
Ví dụ sau khởi tạo các thuộc tính của lớp Employee.
class Employee:
def __init__(self, name, id):
self.id = id;
self.name = name;
def display(self):
print("ID: %d \nName: %s" % (self.id, self.name))
emp1 = Employee("Vinh", 101)
emp2 = Employee("Trung", 102)
# gọi phương thức display() để hiển thị thông tin employee 1
emp1.display();
# gọi phương thức display() để hiển thị thông tin employee 2
emp2.display();
ID: 101
Name: Vinh
ID: 102
Name: Trung
Ví dụ: Đếm số lượng đối tượng của một lớp
class Student:
count = 0
def __init__(self):
Student.count = Student.count + 1
s1 = Student()
s2 = Student()
s3 = Student()
print("Số lượng sinh viên là:", Student.count)
Kết quả:
Số lượng sinh viên là: 3
Ví dụ: constructor không tham số trong Python
class Student:
# Constructor không tham số
def __init__(self):
print("Đây là constructor không tham số")
def show(self, name):
print("Hello", name)
student = Student()
student.show("The Mac")
Kết quả:
Đây là constructor không tham số
Hello The Mac
Kết quả:
Đây là constructor tham số.
Hello The Mac
2. Các hàm lớp dựng sẵn của Python
Các hàm dựng sẵn được định nghĩa trong lớp được mô tả trong bảng sau.
STT | Hàm | Mô tả |
---|---|---|
1 | getattr(obj,name,default) | Nó được sử dụng để truy cập thuộc tính của đối tượng. |
2 | setattr(obj, name,value) | Nó được sử dụng để đặt một giá trị cụ thể cho thuộc tính cụ thể của một đối tượng. |
3 | delattr(obj, name) | Nó được sử dụng để xóa một thuộc tính cụ thể. |
4 | hasattr(obj, name) | Nó trả về true nếu đối tượng chứa một số thuộc tính cụ thể. |
Ví dụ:
class Student:
def __init__(self, name, id, age):
self.name = name;
self.id = id;
self.age = age
# tạo đối tượng của lớp Student
s = Student("Trung", 101, 22)
# in thuộc tính name của đối tượng s
print(getattr(s, 'name'))
# gán giá trị của age cho 23
setattr(s, "age", 23)
# in giá trị của age
print(getattr(s, 'age'))
# true nếu student chứa thuộc tính id
print(hasattr(s, 'id'))
# xóa thuộc tính age
delattr(s, 'age')
# bắn ra lỗi nếu age đã bị xóa
print(s.age)
Kết quả:
Trung
23
True
print(s.age)
AttributeError: 'Student' object has no attribute 'age'
3. Các thuộc tính lớp tích hợp
Cùng với các thuộc tính khác, một lớp python cũng chứa một số thuộc tính lớp tích hợp cung cấp thông tin về lớp.
Các thuộc tính lớp tích hợp được đưa ra trong bảng dưới đây.
STT | Hàm | Mô tả |
---|---|---|
1 | __dict__ | Nó trả về dictionary chứa namespace của lớp. |
2 | __doc__ | Nó chứa một chuỗi về tài liệu lớp. |
3 | __name__ | Nó được sử dụng để truy cập tên lớp. |
4 | __module__ | Nó được sử dụng để truy cập mô-đun trong đó, lớp này được định nghĩa. |
5 | __bases__ | Nó chứa một tuple bao gồm tất cả các lớp cơ sở. |
Ví dụ:
class Student:
def __init__(self, name, id, age):
self.name = name;
self.id = id;
self.age = age
def display_details(self):
print("Name:%s, ID:%d, age:%d" % (self.name, self.id))
s = Student("Trung", 101, 22)
print(s.__doc__)
print(s.__dict__)
print(s.__module__)
Kết quả:
None
{'name': 'Trung', 'id': 101, 'age': 22}
Trên đây là bài viết của eLib.VN về Constructor trong Python. Hy vọng bài viết hữu ích cho những bạn đang nghiên cứu về Constructor của Python. Chúc các bạn thành công và đam mê với con đường lập trình.
Tham khảo thêm
- doc Lập trình hướng đối tượng trong Python
- doc Lớp và đối tượng trong Python
- doc Kế thừa trong Python
- doc Ghi đè phương thức trong Python
- doc Trừu tượng dữ liệu trong Python