Hàm staticmethod() được coi là un-Pythonic (ngôn ngữ không chính thống của Python). Trong các phiên bản mới hơn của Python, bạn nên sử dụng decorator @staticmethod để thay thế. | C-n.vn

Hàm staticmethod() được coi là un-Pythonic (ngôn ngữ không chính thống của Python). Trong các phiên bản mới hơn của Python, bạn nên sử dụng decorator @staticmethod để thay thế.

Cú pháp của @staticmethod là:

@staticmethod
def func(args, ...)

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

Hàm staticmethod() được xác định bằng cú pháp sau:

staticmethod(function)

Tham số của hàm staticmethod()

Hàm staticmethod() 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.

Hàm staticmethod() trong Python được dùng để tạo static method của một đối tượng
Hàm staticmethod() trong Python được dùng để tạo static method của một đối tượng

Static method là gì?

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

READ:  Gửi tiết kiệm online BIDV giúp khách hàng tiết kiệm thời gian làm thủ tục, mở tài khoản tiết kiệm mà không cần phải tới ngân hàng. Hiện tại đã có rất nhiều ngân hàng triển khai dịch vụ gửi tiết kiệm online, như gửi tiết kiệm online Vietcombank… Khi gửi tiết kiệm online BIDV, khách hàng sẽ nhận được những ưu đãi hấp dẫn, chọn phương thức nhận lãi… Bài viết dưới đây sẽ hướng dẫn bạn đọc cách gửi tiết kiệm online trên BIDV. | C-n.vn

Sự khác biệt giữa static method và class method là:

Static method không biết gì về class và chỉ xử lý các tham số. Trong khi đó, class method luôn dựa vào class vì tham số của nó luôn luôn là chính class.

Cả static method và class method đều có thể được gọi bởi cả class và đối tượng.

Class.staticmethodFunc()
hoặc thậm chí
Class().staticmethodFunc()

Ví dụ 1: Tạo một static method bằng cách sử dụng hàm staticmethod()

class Quantrimang:

    def themso(x, y):
        return x + y

# tạo static method thêm số
Quantrimang.themso = staticmethod(Quantrimang.themso)

print('Tổng số là:', Quantrimang.themso(5, 10))

Khi chạy chương trình, kết quả thu được là:

Tổng số là: 15

Khi nào chúng ta nên sử dụng static method?

1. Nhóm hàm tiện ích vào một class

Khả năng ứng dụng của static method khá hạn chế bởi, cũng giống với class method hoặc bất kỳ method nào bên trong class, chúng không thể truy cập vào các thuộc tính của chính lớp đó.

Tuy nhiên, khi bạn cần một hàm tiện ích không truy cập bất kỳ thuộc tính nào của một lớp nhưng lại mang ý nghĩa rằng nó thuộc về lớp đó, chúng ta sẽ sử dụng static method.

Ví dụ 2: Tạo một hàm tiện ích bằng static method

class Dates:
    def __init__(self, date):
        self.date = date
        
    def getDate(self):
        return self.date

    @staticmethod
    def toDashDate(date):
        return date.replace("https://quantrimang.com/", "-")

date = Dates("15-12-2016")
dateFromDB = "15/12/2016"
dateWithDash = Dates.toDashDate(dateFromDB)

if(date.getDate() == dateWithDash):
    print("Trùng khớp")
else:
    print("Không trùng khớp")

Chạy chương trình cho kết quả là:

Trùng khớp

Ở đây, chúng ta có class Dates chỉ hoạt động với dự liệu ngày tháng năm sử dụng dấu gạch ngang để biểu thị. Tuy nhiên, trong dữ liệu cũ, tất cả ngày tháng năm đều dùng dấu gạch chéo để biểu thị.

READ:  Tiếp tục với chủ đề các hàm tích hợp sẵn trong Python, bài viết sẽ giới thiệu cho các bạn về hàm next() với cú pháp, cách sử dụng cũng như các ví dụ cụ thể. Mời bạn đọc theo dõi. | C-n.vn

Để chuyển đổi từ ngày tháng năm dùng dấu gạch chéo sang ngày tháng năm dùng dấu gạch ngang, chúng ta tạo một hàm tiện ích toDashDate bên trong Dates.

Nó là một static method bởi nó không cần truy cập bất cứ thuộc tính nào của Dates và chỉ cần tham số nhập vào.

Chúng ta cũng có thể tạo toDashDate bên ngoài class nhưng vì nó chỉ xử lý các dữ liệu liên quan tới ngày tháng nên để nó trong class Dates là lựa chọn logic, giúp code trình bày gọn gàng hơn.

2. Có duy nhất một thực thi

Static method được sử dụng khi chúng ta không muốn một class con trong một class thay đổi/ghi đè lên một thực thi đặc biệt của một method.

Ví dụ 3: Kế thừa hoạt động như thế nào với static method?

class Dates:
    def __init__(self, date):
        self.date = date
        
    def getDate(self):
        return self.date

    @staticmethod
    def toDashDate(date):
        return date.replace("https://quantrimang.com/", "-")

class DatesWithSlashes(Dates):
    def getDate(self):
        return Dates.toDashDate(self.date)

date = Dates("15-12-2016")
dateFromDB = DatesWithSlashes("15/12/2016")

if(date.getDate() == dateFromDB.getDate()):
    print("Trùng khớp")
else:
    print("Không trùng khớp")

Kết quả

Trùng khớp

Ở đây, chúng ta không muốn class con DatesWithSlashes ghi đè lên static utility method toDashDate bởi vì nó chỉ sử dụng một lần duy nhất, ví dụ thay đổi ngày tháng từ dạng sử dụng gạch chéo sang dạng gạch ngang.

Chúng ta có thể dễ dàng sử dụng static method để có thêm nhiều lợi ích bằng cách ghi đè method getDate() trong class con để nó hoạt động tốt với class DatesWithSlashes.

  • Các hàm Python tích hợp sẵn
  • Lệnh if, if…else, if…elif…else trong Python
  • Kiểu dữ liệu trong Python: chuỗi, số, list, tuple, set và dictionary
  • Hàm sorted() trong Python
  • Hàm setattr() trong Python
  • Hàm repr() trong Python
  • Hàm property() trong Python
READ:  Tài khoản Outlook cũng có chức năng gửi mail tương tự như những dịch vụ gửi email khác. Và cũng có thể người dùng không có nhu cầu muốn sử dụng Outlook nữa và muốn xóa tài khoản email khỏi Outlook, cũng tương tự như xóa tài khoản Gmail. Sau khi xóa tài khoản thì chúng ta không thể gửi email, hoặc nhận email được nữa vì tài khoản email Outlook không còn tồn tại. Khi đó toàn bộ thông tin cơ bản về tài khoản email, dữ liệu về email liên hệ hay dữ liệu về lịch đã tạo trên Outlook sẽ không còn. Về cơ bản thì thao tác xóa tài khoản email khỏi Outlook trên máy tính rất đơn giản và không phức tạp. Bài viết dưới đây sẽ hướng dẫn bạn đọc cách gỡ tài khoản email khỏi Outlook. | C-n.vn
Xem thêm bài viết thuộc chuyên mục: Công nghệ

Có thể bạn quan tâm