Thứ Hai, 20 tháng 5, 2024

37. Lớp và đối tượng trong Python phần 2

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


 

Phần tiếp theo


Phần trước





 

 

Không có nhận xét nào:

Đăng nhận xét