Trang chủ>  Blog >  Chia sẻ kinh nghiệm >  Phân Biệt 02 Hàm Static Method Trong Python Và Hàm Class Method Trong Python

Phân Biệt 02 Hàm Static Method Trong Python Và Hàm Class Method Trong Python


Xin chào bạn. Trong chuyên mục lần này MCI sẽ giúp các bạn phân biệt giữa hàm Static method trong python và hàm Class method trong Python. Nếu chúng ta phát triển sự hiểu biết trực quan về sự khác biệt của những hàm trên, chúng ta có thể viết Python hướng đối tượng truyền đạt ý định của nó rõ ràng hơn và sẽ dễ duy trì hơn về lâu dài.

  2,397 lượt xem

Nội dung bài viết

 

Static Method va Class Method trong Python-min

 

1. Static Method trong python là gì?

 

MyClass.static method được đánh dấu bằng decorator @staticmethod để gắn cờ nó là một static method.

 

Loại phương thức này không nhận tham số self hay cls (nhưng tất nhiên có thể miễn phí chấp nhận một số lượng tùy ý các tham số khác).

 

Do đó, một phương thức tĩnh không thể sửa đổi trạng thái đối tượng cũng như trạng thái lớp. Các phương thức tĩnh bị hạn chế về dữ liệu mà chúng có thể truy cập - và chúng chủ yếu là một cách để tạo không gian tên cho các phương thức của bạn.

 

Static method trong python bản chất vẫn là những method được liên kết với một class chứ. Và nó có ưu điểm là không phụ thuộc vào trạng thái của đối tượng.

 

2. Cú pháp của hàm staticmethod() trong Python

 

Cú pháp:

 

class C(object):

 

    @staticmethod

 

    def fun(arg1, arg2, ...):

 

        ...

 

returns: a static method for function fun.

 

  • Static method trong python là một phương thức được liên kết với lớp chứ không phải đối tượng của lớp.
  • Static method không thể truy cập hoặc sửa đổi trạng thái lớp.
  • Nó hiện diện trong một lớp vì nó có ý nghĩa đối với phương thức hiện diện trong lớp.

 

3. Tham số của hàm Static Method trong python

 

Hàm staticmethod() chỉ có một tham số duy nhất:

 

  • Hàm: Hàm cần được chuyển thành một static method

 

Giá trị trả về của hàm staticmethod()

 

Hàm staticmethod() trả về một static method cho một hàm tham số mà bạn đưa vào.

 

4. Class Method trong python là gì?

 

Decorator của  @classmethod là hàm tích hợp, là một biểu thức được đánh giá sau khi hàm của bạn được xác định. Kết quả của đánh giá đó làm mờ định nghĩa chức năng của bạn.

 

Một Class Method như một đối số đầu tiên ngầm định, giống như một instance method.

 

Cú pháp:

 

lớp C (đối tượng):

 

    @classmethod

 

    def fun (cls, arg1, arg2, ...):

 

       ....

 

fun: hàm cần được chuyển đổi thành một Class Method trong python

 

Return: một class method cho hàm.

 

Class Method trong python là một phương thức được liên kết với class chứ không phải đối tượng của Class..

 

Chúng có quyền truy cập vào trạng thái của Class vì class method nhận một tham số class parameter trỏ đến class của nó chứ không phải đối tượng của class.

 

Các Class Method trong python có thể sửa đổi, áp dụng cho tất cả các trường hợp của class. Ví dụ. Ví dụ như nó có thể sửa đổi một biến class  sẽ được áp dụng cho tất cả các trường hợp.

 

5. Sự khác biệt giữa Class Method và Static Method trong python

 

Class method sẽ lấy cls làm tham số đầu tiên trong static method không cần tham số cụ thể.

 

Một Class method có thể truy cập hoặc sửa đổi trạng thái class trong khi một static method không thể truy cập hoặc sửa đổi nó.

 

Nói chung, các static method không biết gì về trạng thái của class. Chúng là các method kiểu tiện ích ( utility type methods) nhận một số tham số và hoạt động dựa trên các tham số đó. - Mặt khác, các method của class method phải có class là một tham số.

 

Chúng ta sử dụng @classmethod decorator trong python để tạo một class method và chúng tôi sử dụng @staticmethod decorator để tạo một static method trong python.

 

6. Sử dụng static method hay class method trong những trường hợp nào

 

Thông thường. mọi người sử dụng class method để tạo các factory methods. Các factory methods trả về các đối tượng lớp (tương tự như một phương thức khởi tạo) cho các trường hợp sử dụng khác nhau.

 

Sử dụng các static method để tạo các utility functions (Hàm tiện ích)

 

7. Làm thế nào để định nghĩa static method và class method

 

Để xác định một class method trong python, chúng ta cần sử dụng @classmethod decorator và để xác định một static method, chúng ta sử dụng @staticmethod decorator.

 


Chúng ta hãy cùng xem xét một ví dụ để hiểu sự khác biệt giữa cả hai. Giả sử chúng ta muốn tạo một Class Person. Hiện tại, python không hỗ trợ nạp chồng phương thức như C ++ hoặc Java, vì vậy chúng ta cần sử dụng các class method để tạo các factory methods. Trong ví dụ dưới đây, chúng ta sử dụng một class method để tạo một đối tượng người từ năm sinh.

 


Như đã giải thích ở trên, chúng ta sử dụng các static method để tạo các utility functions (hàm tiện ích). Trong ví dụ dưới đây, chúng ta sử dụng Static method để kiểm tra xem một người có phải là người lớn hay không.

 

Ví dụ:
# python program to demonstrate
# use of class method and static method
from datetime import date
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
# a class method to create a Person object by birth year.
    @classmethod
    def fromBirthYear(cls, name, year):
        return cls(name, date.today().year - year)
      
 # a static method to check if a Person is adult or not.
    @staticmethod
    def isAdult(age):
        return age > 18
  
person1 = Person('My Anh', 21)
person2 = Person.fromBirthYear('My Anh', 1996)
  
print (person1.age)
print (person2.age)
  
# print the result
print (Person.isAdult(22))

Output:
21
25
True

 

Chia sẻ của MCI về Static và Class method sẽ kết thúc tại đây, mong rằng thông qua bài viết các bạn đã hiểu hơn về 2 method này và dễ dàng ứng dụng hơn. Các bạn nhớ theo dõi MCI để nhận được nhiều kiến thức hơn nha!

 

Bạn cũng có thể tham khảo thêm về khoá học Python cơ bản đến nâng cao tại MCI để tìm cho mình lộ trình học hiệu quả hơn nhé.

Chương trình đào tạo: Phân tích dữ liệu, Khoa học dữ liệu, Kĩ sư dữ liệu, Lập trình ứng dụng.
Chất lượng nhất - Uy tín nhất - Nhiều học viên tin tưởng nhất
Hơn 8000 học viên ưu tú đã tốt nghiệp
Đăng ký tư vấn khóa học

*Vui lòng nhập số điện thoại của bạn

*Vui lòng nhập họ tên của bạn

*Vui lòng chọn địa điểm học

*Vui lòng chọn giới tính

*Vui lòng chọn 1 trường


Các bài viết liên quan


Cấu Trúc Điều Kiện (if-else) – Cho Code Thông Minh Hơn

Cấu trúc điều kiện là “bộ não” của chương trình. Nó cho phép Python ra quyết định dựa trên dữ liệu đầu vào: nếu điều kiện đúng thì làm việc A, nếu sai thì làm việc B. Hiểu đúng if-else giúp code bạn trở nên linh hoạt và thông minh hơn.

🐍 Xây dựng Pipeline Phân Tích Dữ Liệu với Python – từ Raw → Clean → Dashboard

Mỗi tuần bạn tải file Excel từ email, lọc dữ liệu, xoá trùng, sửa ngày tháng, rồi vẽ lại báo cáo thủ công? ⏳ Tốn thời gian, dễ sai sót, không thể tái sử dụng. ✅ Giải pháp: Data Pipeline – tự động hoá toàn bộ quy trình xử lý dữ liệu bằng Python. Chỉ cần chạy một lệnh, bạn sẽ có dữ liệu sạch và báo cáo sẵn sàng.

Kết nối Python với SQL – lấy dữ liệu và trực quan hóa

Bạn có dữ liệu trong MySQL, PostgreSQL hoặc SQL Server – nhưng muốn phân tích bằng Python, vẽ biểu đồ với pandas/matplotlib hoặc tạo dashboard? → Trong bài viết này, bạn sẽ học cách kết nối Python với SQL, lấy dữ liệu ra DataFrame, và trực quan hóa ngay bằng biểu đồ.

Các bài viết liên quan