Skip to main content

One post tagged with "Hàm trong lớp"

View All Tags

Hàm Trong Lớp Python - Phương Thức Trong OOP

· 3 min read

Trong lập trình hướng đối tượng (OOP) của Python, hàm trong lớp (hay phương thức - method) là các hàm được định nghĩa bên trong một lớp và có thể thao tác với các thuộc tính của lớp đó.

1. Các Loại Hàm Trong Lớp

Python hỗ trợ ba loại phương thức chính trong một lớp:

1.1. Instance Method

  • Là phương thức phổ biến nhất, có thể truy cập và thay đổi thuộc tính của từng đối tượng.
  • Cần có tham số self để tham chiếu đến chính đối tượng.

Ví dụ:

class NhanVien:
def __init__(self, ten, luong):
self.ten = ten
self.luong = luong

def hien_thi_thong_tin(self):
return f"Nhân viên: {self.ten}, Lương: {self.luong} VND"

nv = NhanVien("Hà", 15000000)
print(nv.hien_thi_thong_tin())

1.2. Class Method

  • Được sử dụng khi muốn làm việc với biến của lớp thay vì từng đối tượng riêng lẻ.
  • Sử dụng decorator @classmethod và tham số cls.

Ví dụ:

class CongTy:
so_nhan_vien = 0

def __init__(self, ten):
self.ten = ten
CongTy.so_nhan_vien += 1

@classmethod
def tong_nhan_vien(cls):
return f"Tổng số nhân viên: {cls.so_nhan_vien}"

# Tạo nhân viên mới
nv1 = CongTy("Hà")
nv2 = CongTy("Nam")

print(CongTy.tong_nhan_vien())

1.3. Static Method

  • Là phương thức độc lập, không truy cập thuộc tính của lớp hay đối tượng.
  • Dùng @staticmethod để định nghĩa.

Ví dụ:

class TinhToan:
@staticmethod
def cong(a, b):
return a + b

print(TinhToan.cong(10, 20))

2. Ứng Dụng Thực Tế Của Hàm Trong Lớp

Dưới đây là ví dụ về một hệ thống quản lý giao dịch tài chính sử dụng OOP:

class TaiKhoanNganHang:
lai_suat = 0.03 # Biến lớp

def __init__(self, so_tk, so_du):
self.so_tk = so_tk
self.so_du = so_du

def gui_tien(self, so_tien):
self.so_du += so_tien
return f"Đã gửi {so_tien} VND. Số dư mới: {self.so_du} VND"

@classmethod
def thay_doi_lai_suat(cls, lai_suat_moi):
cls.lai_suat = lai_suat_moi
return f"Lãi suất mới: {cls.lai_suat * 100}%"

@staticmethod
def kiem_tra_so_tk(so_tk):
return len(str(so_tk)) == 10

# Tạo tài khoản
tk1 = TaiKhoanNganHang(1234567890, 5000000)

# Gửi tiền
print(tk1.gui_tien(2000000))

# Thay đổi lãi suất
print(TaiKhoanNganHang.thay_doi_lai_suat(0.05))

# Kiểm tra số tài khoản hợp lệ
print(TaiKhoanNganHang.kiem_tra_so_tk(1234567890))

Kết Luận

  • Instance Method thường dùng để làm việc với thuộc tính của từng đối tượng.
  • Class Method dùng để làm việc với biến của lớp.
  • Static Method không liên quan đến dữ liệu của lớp hoặc đối tượng, chỉ chứa logic độc lập.

Hy vọng bài viết này giúp bạn hiểu rõ hơn về phương thức trong Python OOP! 🚀