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.

  1,804 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
Các khóa học

Đă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


Python dành cho ai? Lộ trình từ mới bắt đầu đến chuyên gia

Học Python từ cơ bản đến chuyên gia. Khám phá đối tượng phù hợp và lộ trình học tập hiệu quả để phát triển sự nghiệp lập trình của bạn.

Tối Ưu Hóa Việc Xử Lý Chuỗi Với Hàm Split Trong Python

Hướng dẫn chi tiết cách sử dụng hàm split trong Python để tách chuỗi. Bài viết bao gồm ví dụ dễ hiểu và ứng dụng thực tế, giúp bạn nắm vững kỹ năng

Hướng Dẫn Từ A Đến Z Về Các Kiểu Dữ Liệu Trong Python

Tìm hiểu về các kiểu dữ liệu trong Python, từ cơ bản đến nâng cao. Bài viết giúp bạn nắm vững các khái niệm cần thiết để phát triển kỹ năng lập trình Python

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