Các hàm khởi tạo (Constructor) thường được sử dụng để khởi tạo một đối tượng (Object). Nhiệm vụ là khởi tạo (gán giá trị) cho các thành phần dữ liệu của lớp khi một đối tượng của lớp được tạo. Trong Python, phương thức __init__() được gọi là hàm khởi tạo và luôn được gọi khi một đối tượng được tạo.
Cú pháp khai báo hàm khởi tạo:
def __init__(self):
# phần thân của hàm khởi tạo
Các loại hàm khởi tạo:
- Hàm khởi tạo mặc định (default constructor): Hàm khởi tạo mặc định là một hàm đơn giản không chấp nhận bất kỳ đối số nào. Định nghĩa của nó chỉ có một đối số là tham chiếu đến thể hiện đang được xây dựng.
- Hàm khởi tạo có tham số (parameterized constructor): hàm khởi tạo có tham số được gọi là parameterized constructor. Hàm khởi tạo có tham số lấy đối số đầu tiên của nó làm tham chiếu đến thể hiện đang được xây dựng được gọi là self (Hay bất kỳ cái gì bạn muốn) và các đối số còn lại do lập trình viên cung cấp.
Ví dụ về hàm khởi tạo mặc định:
class SinhVien:
def __init__(self, name, id):
self.id = id;
self.name = name;
def display (self):
print("ID: %d \nName: %s" % (self.id, self.name))
sv1 = SinhVien("Nguyen Van A", 101)
sv2 = SinhVien("Tran Van B", 102)
# gọi phương thức display() để hiển thị thông tin sinh vien 1
sv1.display();
# gọi phương thức display() để hiển thị thông tin sinh vien 2
sv2.display();
Sử dụng IDE Online để chạy Code
Nói chung, cứ hiểu hàm khởi tạo chủ yếu được sử dụng để khởi tạo các thuộc tính của đối tượng. Mỗi lớp phải có một constructor, khi đối tượng được tạo ra thì đã "có sẵn vốn" là một constructor. Kiểu như đám cưới xong có vốn là mấy "lượng" vàng, để nguyên vậy hay muốn làm dây chuyền, nhẫn...thì tùy ý.
Class ==> Objects ==> Constructor
Python có nhiều hàm dựng sẵn (built-in functions) đây là vài hàm trong số đó.
|
Hàm |
Mô tả |
1 |
getattr(obj,name,default) |
Được sử dụng để truy cập thuộc tính của đối tượng. |
2 |
setattr(obj, name,value) |
Đượ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) |
Được sử dụng để xóa một thuộc tính cụ thể. |
4 |
hasattr(obj, name) |
Trả về true nếu đối tượng chứa một số thuộc tính cụ thể. |
Chúng ta thử chạy code sau để hình dung chức năng của mấy hàm duwnhj sẵn trên
class SinhVien:
def __init__(self, name, id, age):
self.name = name;
self.id = id;
self.age = age
# tạo đối tượng của lớp SinhVien
s = SinhVien("Tran Van A", 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 la 24
setattr(s, "age", 24)
# in giá trị của age ra man hinh
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')
# phat sinh lỗi nếu age đã bị xóa
print(s.age)
Sử dụng IDE Online để chạy chương trình
Xử lý ngoại lệ (Exception) trong Python
Ngoại lệ (Exception) có thể là bất kỳ điều kiện bất thường nào trong chương trình mà phá vỡ luồng thực thi chương trình đó. Bất cứ khi nào một ngoại lệ xuất hiện, mà không được xử lý, thì chương trình ngừng thực thi và vì thế code không được thực thi. Hiểu hơi "đơn giản hóa" một chút thì ngoại lệ là những lỗi xảy ra khi thực thi chương trình. Mỗi khi thử chạy code mà xuất hiện những dòng chữ màu đỏ thì chắc chắn đã có lỗi gì đó, nói cách khác đã có một Exception xuất hiện.
Python đã định nghĩa sẵn rất nhiều ngoại lệ, được trình bày trong Standard Exception.
Trong quá trình thảo luận những chương trình...tào lao của chúng ta, chúng ta đã thấy những dòng chữ đỏ báo hiệu những điều...không lấy gì tốt đẹp nhiều lần, và đó là những lỗi của code hay những Exception đã xuất hiện.
Nếu bạn thấy bất cứ code nào là khả nghi (có thể gây ra ngoại lệ) thì bạn có thể phòng thủ chương trình của mình bằng cách đặt các khối code khả nghi này trong một khối try. Khối try này được theo sau bởi lệnh except. Sau đó, nó được theo sau bởi các lệnh mà xử lý vấn đề đó. Nếu chúng ta phòng thủ bằng cách đặt code khả nghi trong khối try thì chương trình của chúng ta sẽ không dừng lại mà vẫn thực thi, và cho chúng ta biết chuyện gì đã xảy ra hoặc thực thi những gì chúng ta muốn.
Cú pháp:
Cú pháp của khối try....except...else trong Python:
try:
Day la phan code co the tao exception;
......................
except ExceptionI:
Neu co ExceptionI, thi thuc thi khoi code nay
except ExceptionII:
Neu co ExceptionII, thi thuc thi khoi code nay
......................
else:
Neu khong co exception nao thi thuc thi khoi code nay
Lưu ý:
- Phần code khả nghi mà có khả năng tạo exception cần được bao quanh trong khối try.
- Khối try được theo sau bởi lệnh except. Có thể có một hoặc nhiều lệnh except với một khối try đơn.
- Lệnh except xác định exception mà xảy ra. Trong trường hợp mà exception đó xảy ra, thì lệnh tương ứng được thực thi.
- Ở cuối khối try catch, bạn có thể cung cấp lệnh else. Nó được thực thi khi không có exception nào xảy ra. Khối else là địa điểm tốt cho code mà không cần sự bảo vệ của khối try.
Đây là một đoạn code đơn giản, chúng ta chạy thử trên IDE Online.
tongSo = 10000
if(tongSo > 2999)
print("Ban co the vao sieu thi mua hang")
Kết quả
Đã có lỗi xảy ra, hay đã có một Exception xuất hiện vì thiếu dấu hai chấm :. Lỗi có thể xảy ra bất cứ lúc nào, chúng ta thêm một ví dụ, chúng ta cộng một chuỗi với một số:
x = 5
y = "hello"
z = x + y
Chạy thử chương trình
Đã có một Exception xuất hiện vì ta đã "cố" ghép sơn tinh với thủy tinh. Code của chúng ta cố gắng cộng một số nguyên x và một chuỗi y với nhau, code này không hợp lệ và sẽ gây ra 'TypeError'. Chúng ta sẽ sử dụng khối 'try' và 'except' để bắt ngoại lệ này và in ra thông báo lỗi.
x = 5
y = "hello"
try:
z = x + y
except TypeError:
print("Co loi: ban khong the cong mot int voi mot str")
Chạy chương trình
Bạn có để ý thấy rằng giờ đây chương trình đã chạy hoàn tất, với exit code 0. Lỗi vẫn xảy ra, nhưng chương trình không dừng "bất tử" giữa chừng mà hoàn toàn có thể tiếp tục với những dòng code tiếp theo.
Không có nhận xét nào:
Đăng nhận xét