Skip to main content

2 posts tagged with "Class"

View All Tags

Các Loại Phương Thức Trong Lớp Python

· 2 min read

🔹 1. Instance Methods – Phương thức của đối tượng

class Stock:
def __init__(self, name, price):
self.name = name
self.price = price

def update_price(self, new_price):
self.price = new_price
print(f"Giá cổ phiếu {self.name} đã cập nhật: {self.price}")

s = Stock("AAPL", 175)
s.update_price(180)

🔹 2. Class Methods – Phương thức của lớp

class Stock:
stock_count = 0

def __init__(self, name, price):
self.name = name
self.price = price
Stock.stock_count += 1

@classmethod
def get_stock_count(cls):
return cls.stock_count

s1 = Stock("AAPL", 175)
s2 = Stock("TSLA", 720)

print("Tổng số cổ phiếu:", Stock.get_stock_count())

🔹 3. Static Methods – Phương thức tĩnh

class Stock:
@staticmethod
def is_trading_hour(hour):
return 9 <= hour <= 16

print(Stock.is_trading_hour(14)) # True
print(Stock.is_trading_hour(20)) # False

🔹 4. Dunder Methods – Phương thức đặc biệt

class Stock:
def __init__(self, name, price):
self.name = name
self.price = price

def __str__(self):
return f"Cổ phiếu {self.name} có giá {self.price}"

def __repr__(self):
return f"Stock('{self.name}', {self.price})"

s = Stock("AAPL", 175)
print(s) # __str__()
print(repr(s)) # __repr__()

📌 Tổng kết

Loại phương thứcDecoratorDùng để làm gì?
Instance MethodKhông cóLàm việc với từng đối tượng
Class Method@classmethodLàm việc với lớp (dùng cls)
Static Method@staticmethodHàm thông thường trong lớp
Dunder Method__init__, __str__, __add__...Tùy chỉnh hành vi

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! 🚀