Python - Phương pháp lớp: Hướng dẫn cho người mới bắt đầu

Xin chào các bạn, những người yêu thích Python tương lai! Hôm nay, chúng ta sẽ bắt đầu hành trình thú vị vào thế giới các phương pháp lớp trong Python. Đừng lo lắng nếu bạn mới bắt đầu học lập trình – tôi sẽ là người hướng dẫn bạn, giải thích mọi thứ từng bước. Vậy hãy bắt đầu nào!

Python - Class Methods

Phương pháp lớp là gì?

Trước khi bắt đầu, hãy hiểu rõ về phương pháp lớp là gì. Hãy tưởng tượng một lớp như bản kế hoạch để tạo ra các đối tượng. Các phương pháp lớp là các hàm đặc biệt thuộc về toàn bộ lớp, không chỉ là các đối tượng riêng lẻ được tạo ra từ lớp đó. Chúng có thể truy cập và thay đổi các thuộc tính cấp lớp, được chia sẻ bởi tất cả các thể hiện của lớp.

Tạo các phương pháp lớp trong Python

Có hai cách chính để tạo các phương pháp lớp trong Python. Hãy khám phá cả hai!

Sử dụng hàm classmethod()

Cách đầu tiên để tạo một phương pháp lớp là bằng cách sử dụng hàm classmethod(). Dưới đây là cách nó trông như thế nào:

class MyClass:
class_attribute = "Tôi thuộc về lớp"

def regular_method(self):
return "Tôi là một phương pháp bình thường"

@classmethod
def class_method(cls):
return f"Tôi là một phương pháp lớp và tôi có thể truy cập {cls.class_attribute}"

# Tạo một thể hiện của MyClass
my_object = MyClass()

# Gọi phương pháp lớp
print(MyClass.class_method())
print(my_object.class_method())

Trong ví dụ này, class_method là phương pháp lớp của chúng ta. Có thể thấy chúng ta sử dụng cls thay vì self là tham số đầu tiên. cls này đại diện cho lớp chính nó, không phải là một thể hiện của lớp.

Sử dụng trình trang trí @classmethod

Cách thứ hai, phổ biến hơn và đẹp hơn (theo quan điểm hữu tội của tôi), là sử dụng trình trang trí @classmethod. Nó như là để một chiếc mũ đặc biệt trên phương pháp của chúng ta để nói với Python, "Ôi, đây là một phương pháp lớp!"

class Pizza:
restaurant = "Mama Mia's"

@classmethod
def change_restaurant(cls, new_restaurant):
cls.restaurant = new_restaurant

# Thay đổi tên nhà hàng
Pizza.change_restaurant("Papa John's")

print(Pizza.restaurant)  # Output: Papa John's

Trong ví dụ ngon miệng này, chúng ta có một lớp Pizza với phương pháp lớp change_restaurant. Phương pháp này có thể thay đổi thuộc tính restaurant cho toàn bộ lớp. Mmm!

Truy cập các thuộc tính lớp trong phương pháp lớp

Một trong những khả năng siêu anh hùng của các phương pháp lớp là khả năng truy cập và thay đổi các thuộc tính lớp. Hãy xem nó hoạt động như thế nào:

class Student:
school = "Python High"
total_students = 0

def __init__(self, name):
self.name = name
Student.total_students += 1

@classmethod
def change_school(cls, new_school):
cls.school = new_school

@classmethod
def get_school_info(cls):
return f"Chào mừng đến {cls.school}! Chúng ta có {cls.total_students} sinh viên."

# Tạo một số sinh viên
alice = Student("Alice")
bob = Student("Bob")

print(Student.get_school_info())
# Output: Chào mừng đến Python High! Chúng ta có 2 sinh viên.

Student.change_school("Codecademy Academy")
print(Student.get_school_info())
# Output: Chào mừng đến Codecademy Academy! Chúng ta có 2 sinh viên.

Ở đây, các phương pháp lớp của chúng ta có thể truy cập và thay đổi thuộc tính school và đọc thuộc tính total_students. Nó như là chúng có quyền truy cập VIP vào thông tin bí mật của lớp!

Thêm phương pháp lớp động vào lớp

Bạn có biết chúng ta có thể thêm các phương pháp vào lớp ngay sau khi nó đã được định nghĩa? Nó như là mang lại cho lớp của chúng ta các khả năng siêu mới trên fly! Dưới đây là cách:

class Car:
def __init__(self, brand):
self.brand = brand

def honk(cls):
return f"{cls.__name__} goes beep beep!"

# Thêm phương pháp honk vào lớp Car
Car.honk = classmethod(honk)

my_car = Car("Toyota")
print(my_car.honk())  # Output: Car goes beep beep!

Chúng ta đã định nghĩa honk ngoài lớp và sau đó thêm nó làm một phương pháp lớp. Bây giờ tất cả các đối tượng Car của chúng ta có thể hònking!

Xóa phương pháp lớp động

Chúng ta có thể xóa các phương pháp, tương tự như chúng ta có thể thêm. Nó như là đưa cho lớp của chúng ta một cắt tóc – đôi khi chúng ta cần cắt bỏ các phương pháp mà chúng ta không còn cần nữa:

class Smartphone:
@classmethod
def take_selfie(cls):
return "Cheese!"

@classmethod
def make_call(cls):
return "Đang quay số..."

# Hãy xóa phương pháp take_selfie
del Smartphone.take_selfie

# Điều này sẽ hoạt động
print(Smartphone.make_call())  # Output: Đang quay số...

# Điều này sẽ gây ra một AttributeError
# print(Smartphone.take_selfie())

Nhưng hãy cẩn thận khi xóa các phương pháp, nhớ rồi! Đảm bảo rằng bạn không đang loại bỏ đi điều gì bạn sẽ cần sau này.

Kết luận

Xin chúc mừng! Bạn đã bước ra đầu tiên vào thế giới các phương pháp lớp Python. Hãy tóm tắt lại những gì chúng ta đã học:

Khái niệm Mô tả
Phương pháp lớp Một phương pháp thuộc về lớp hơn là các thể hiện
classmethod() Một hàm để tạo các phương pháp lớp
@classmethod Một trình trang trí để tạo các phương pháp lớp
Tham số cls Đại diện cho lớp trong các phương pháp lớp
Truy cập các thuộc tính lớp Các phương pháp lớp có thể truy cập và thay đổi các thuộc tính lớp
Thêm động Chúng ta có thể thêm các phương pháp lớp sau khi định nghĩa lớp
Xóa động Chúng ta có thể loại bỏ các phương pháp lớp khỏi lớp

Nhớ rồi, luyện tập sẽ làm bạn hoàn hảo. Hãy thử tạo các lớp của riêng bạn và thử nghiệm các phương pháp lớp. Trước khi bạn biết nó, bạn sẽ trở thành một nhà vua Python lớp!

Chúc mãi mãi có mã, và may các lớp của bạn luôn là lớp lịch lãm! ?✨

Credits: Image by storyset