@staticmethod trong Python là gì?

Một phương thức tĩnh là một phương thức tiện ích chung thực hiện một tác vụ trong sự cô lập. Bên trong phương thức này, chúng tôi không sử dụng biến đối tượng hoặc lớp vì phương thức tĩnh này không nhận bất kỳ tham số nào như

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
6 và
class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
0

Ngoài ra, hãy đọc Phương thức lớp Python so với phương thức tĩnh so với phương thức sơ thẩm

Sau khi đọc bài viết này, bạn sẽ học được

  • Cách tạo và sử dụng các phương thức tĩnh trong Python
  • Tạo phương pháp tĩnh bằng cách sử dụng trình trang trí
    class C:
        @staticmethod
        def f(arg1, arg2, ...): ...
    1 và hàm
    class C:
        @staticmethod
        def f(arg1, arg2, ...): ...
    2

Mục lục

  • Phương thức tĩnh trong Python là gì
  • Xác định phương thức tĩnh trong Python
    • Ví dụ. Tạo phương thức tĩnh bằng @staticmethod Decorator
  • Ưu điểm của phương pháp tĩnh
  • Hàm staticmethod()
  • Gọi phương thức tĩnh từ phương thức khác

Phương thức tĩnh trong Python là gì

Một phương thức tĩnh là một phương thức tiện ích chung thực hiện một tác vụ trong sự cô lập. Các phương thức tĩnh trong Python tương tự như các phương thức được tìm thấy trong Java hoặc C++

Một phương thức tĩnh được liên kết với lớp chứ không phải đối tượng của lớp. Do đó, chúng ta có thể gọi nó bằng tên lớp

Một phương thức tĩnh không có quyền truy cập vào các biến lớp và đối tượng vì nó không nhận được đối số đầu tiên ngầm định như

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
6 và
class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
0. Do đó, nó không thể sửa đổi trạng thái của đối tượng hoặc lớp

Có thể gọi phương thức của lớp bằng cách sử dụng 

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
5 cũng như bằng cách sử dụng một đối tượng của lớp

class Employee:
    @staticmethod
    def sample(x):
        print('Inside static method', x)

# call static method
Employee.sample(10)

# can be called using object
emp = Employee()
emp.sample(10)

Xác định phương thức tĩnh trong Python

Bất kỳ phương thức nào chúng ta tạo trong một lớp sẽ tự động được tạo dưới dạng phương thức thể hiện. Chúng ta phải nói rõ ràng với Python rằng đó là một phương thức tĩnh bằng cách sử dụng hàm 

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
1 trang trí hoặc hàm 
class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
2

Các phương thức tĩnh được xác định bên trong một lớp và nó khá giống với việc xác định một hàm thông thường. Để khai báo một phương thức tĩnh, hãy sử dụng thành ngữ này

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...

Ví dụ. Tạo phương thức tĩnh bằng cách sử dụng Trình trang trí class C: @staticmethod def f(arg1, arg2, ...): ...1

Để biến một phương thức thành một phương thức tĩnh, hãy thêm trình trang trí

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
1 trước định nghĩa phương thức

Trình trang trí

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
1 là trình trang trí chức năng tích hợp trong Python để khai báo một phương thức là một phương thức tĩnh. Đó là một biểu thức được đánh giá sau khi chức năng của chúng tôi được xác định

Trong ví dụ này, chúng tôi sẽ tạo một phương thức tĩnh

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
21 chấp nhận tên dự án và trả về tất cả các yêu cầu để hoàn thành trong dự án này

Các phương thức tĩnh là một trường hợp đặc biệt của các phương thức. Đôi khi, bạn sẽ viết mã thuộc về một lớp, nhưng điều đó hoàn toàn không sử dụng đối tượng đó. Nó là một phương thức tiện ích và không cần một đối tượng (_______26tham số) để hoàn thành hoạt động của nó. Vì vậy, chúng tôi khai báo nó như một phương thức tĩnh. Ngoài ra, chúng ta có thể gọi nó từ một phương thức khác của một lớp

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
2

đầu ra

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
4

Ưu điểm của phương pháp tĩnh

Ở đây, phương thức tĩnh có những ưu điểm sau

  • Tiêu thụ ít bộ nhớ. Các phương thức sơ thẩm cũng là đối tượng và việc tạo chúng có chi phí. Có một phương pháp tĩnh tránh điều đó. Giả sử bạn có mười đối tượng nhân viên và nếu bạn tạo
    class C:
        @staticmethod
        def f(arg1, arg2, ...): ...
    21 như một phương thức thể hiện thì Python phải tạo mười bản sao của phương thức này (tách biệt cho từng đối tượng) sẽ tiêu tốn nhiều bộ nhớ hơn. Mặt khác, phương thức tĩnh chỉ có một bản sao cho mỗi lớp
class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
6
  • Viết các hàm tiện ích. Các phương thức tĩnh được sử dụng hạn chế vì chúng không có quyền truy cập vào các thuộc tính của đối tượng (biến thể hiện) và thuộc tính lớp (biến lớp). Tuy nhiên, chúng có thể hữu ích trong tiện ích, chẳng hạn như chuyển đổi từ loại này sang loại khác. Các thông số cung cấp là đủ để hoạt động
  • khả năng đọc. Nhìn thấy
    class C:
        @staticmethod
        def f(arg1, arg2, ...): ...
    1 ở đầu phương thức, chúng ta biết rằng phương thức không phụ thuộc vào trạng thái của đối tượng hoặc trạng thái của lớp

Hàm class C: @staticmethod def f(arg1, arg2, ...): ...2

Một số mã có thể sử dụng phương thức cũ để xác định phương thức tĩnh, sử dụng

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
2 làm hàm thay vì trang trí

Bạn chỉ nên sử dụng hàm

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
2 để xác định phương thức tĩnh nếu bạn phải hỗ trợ các phiên bản Python cũ hơn (2. 2 và 2. 3). Mặt khác, nên sử dụng trình trang trí
class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
1

cú pháp

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
2
  • class C:
        @staticmethod
        def f(arg1, arg2, ...): ...
    29. Đó là tên của phương thức bạn muốn chuyển thành phương thức tĩnh
  • Nó trả về phương thức tĩnh đã chuyển đổi

Ví dụ

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
4

Cách tiếp cận

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
2 rất hữu ích khi bạn cần tham chiếu đến một hàm từ thân lớp và bạn muốn tránh chuyển đổi tự động sang phương thức thể hiện

Gọi phương thức tĩnh từ phương thức khác

Hãy xem cách gọi một phương thức tĩnh từ một phương thức tĩnh khác của cùng một lớp. Ở đây chúng ta sẽ phân lớp một phương thức tĩnh từ một phương thức lớp

@staticmethod nghĩa là gì trong Python?

@staticmethod là trình trang trí tích hợp xác định một phương thức tĩnh trong lớp trong Python . Một phương thức tĩnh không nhận bất kỳ đối số tham chiếu nào cho dù nó được gọi bởi một thể hiện của một lớp hay bởi chính lớp đó.

@staticmethod dùng để làm gì?

Chúng tôi sử dụng trình trang trí @classmethod để tạo phương thức lớp. Ở đây chúng tôi sử dụng trình trang trí @staticmethod để tạo một phương thức tĩnh . Nó có thể được sử dụng để định nghĩa một phương thức xuất xưởng trả về các thể hiện của lớp. Nó không thể trả về một đối tượng lớp.

Phương pháp tĩnh nghĩa là gì?

Phương thức tĩnh (hoặc hàm tĩnh) là phương thức được định nghĩa là thành viên của đối tượng nhưng có thể truy cập trực tiếp từ hàm tạo của đối tượng API, thay vì từ phiên bản đối tượng được tạo thông qua . .

@staticmethod trong Django là gì?

A @staticmethod cho phép bạn gắn một hàm vào không gian tên của lớp mà không thực sự gắn hàm đó với lớp . Bạn vẫn phải gọi chức năng đó.