Chúng ta sẽ tiếp tục với lóp và đối tượng trong Python
Hàm __init__()
Các ví dụ trong phần trước là các lớp và đối tượng ở dạng đơn giản nhất và không thực sự hữu ích trong các ứng dụng thực tế.
Để hiểu ý nghĩa của các lớp, chúng ta phải hiểu hàm __init__() có sẵn.
Tất cả các lớp đều có một hàm gọi là __init__(), hàm này luôn được thực thi khi lớp được khởi tạo.
Sử dụng hàm __init__() để gán giá trị cho thuộc tính đối tượng hoặc các thao tác cần thực hiện khác.
Tiếp tục với IDE Online, chúng ta sẽ thử với hàm __init__() Lưu ý là dù gọi hàm (Function) hay phương thức (Method) thì chúng ta cũng đang nói về một thứ.
class Sinhvien:
def __init__(self, ten, tuoi):
self.ten = ten
self.tuoi = tuoi
p1 = Sinhvien("Nguyen Van A", 24)
print(p1.ten)
print(p1.tuoi)
Chạy chương trình
Có lẽ câu lệnh self.ten = ten sẽ làm chúng ta hơi bối rối, vì vậy chúng ta cần thay đổi để dễ hiểu hơn
class Sinhvien:
def __init__(self, ten, tuoi):
self.tensv = ten
self.tuoisv = tuoi
p1 = Sinhvien("Nguyen Van A", 24)
print(p1.tensv)
print(p1.tuoisv)
Chạy chương trình
Nếu vẫn cảm thấy chút "bối rối" thì chúng ta tiếp tục thử với phong cách truyền thống...tào lao.
class Sinhvien:
def __init__(self, ten, tuoi):
self.tensv = ten
self.tuoisv = tuoi
self.khoa = "CNTT"
p1 = Sinhvien("Nguyen Van A", 24)
print(p1.tensv)
print(p1.tuoisv)
print(p1.khoa)
Chạy chương trình
Hàm __init__() luôn được thực thi khi lớp được khởi tạo, nếu chúng ta muốn gán giá trị cho các thuộc tính, chúng ta đơn giản "xào nấu" hàm __init__() như trong ví dụ là được.
Hàm __str__()
Hàm __str__() kiểm soát những gì sẽ được trả về khi đối tượng được biểu diễn dưới dạng một chuỗi.
Nếu hàm __str__() không được đặt, một chuỗi đại diện cho đối tượng sẽ được trả về.
Chúng ta sẽ thử lệnh in đối tượng p1 trong ví dụ trên, vì chưa có hàm __str__() nên kết quả sẽ là một chuỗi đại diện cho đối tượng p1
class Sinhvien:
def __init__(self, ten, tuoi):
self.tensv = ten
self.tuoisv = tuoi
self.khoa = "CNTT"
p1 = Sinhvien("Nguyen Van A", 24)
print(p1.tensv)
print(p1.tuoisv)
print(p1.khoa)
print(p1)
Kết quả
Chúng ta sẽ sửa lại chương trình bằng cách sử dụng hàm __str__(). Trong code có sử dụng một tính năng gọi là f-string, chúng ta tạm hiểu đơn giản là khi chúng ta đặt f trước một biểu thức ví dụ self.tensv, thì biểu thức đó sẽ "biến thành" chuỗi "Nguyen Van A"
class Sinhvien:
def __init__(self, ten, tuoi):
self.tensv = ten
self.tuoisv = tuoi
self.khoa = "CNTT"
def __str__(self):
return f"{self.tensv}({self.tuoisv})"
p1 = Sinhvien("Nguyen Van A", 24)
print(p1.tensv)
print(p1.tuoisv)
print(p1.khoa)
print(p1)
Chạy chương trình
Không có nhận xét nào:
Đăng nhận xét