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