Chúng ta có thể gọi phương thức tĩnh với tên lớp python không?

Ở đây, chúng tôi khai báo một phương thức tĩnh. Chào mừng[]. Sau đó, chúng ta gọi phương thức tĩnh bằng cách sử dụng tên lớp, dấu hai chấm [. ] và tên phương thức [không tạo phiên bản của lớp trước]

PHP - Tìm hiểu thêm về các phương thức tĩnh

Một lớp có thể có cả phương thức tĩnh và không tĩnh. Một phương thức tĩnh có thể được truy cập từ một phương thức trong cùng một lớp bằng cách sử dụng từ khóa self và dấu hai chấm [. ]

Ví dụ

chào lớp {
chức năng tĩnh công khai chào mừng[] {
tiếng vang "Xin chào thế giới. “;
}

hàm công khai __construct[] {
bản thân. Chào mừng[];
}
}

lời chào mới[];
?>

Tự mình thử »

Các phương thức tĩnh cũng có thể được gọi từ các phương thức trong các lớp khác. Để làm điều này, phương thức tĩnh phải là public

Ví dụ

chào lớp {
chức năng tĩnh công khai chào mừng[] {
tiếng vang "Xin chào thế giới. “;
}
}

lớp SomeOtherClass {
thông báo chức năng công khai[] {
Lời chào. hoan nghênh[];
}
}
?>

Tự mình thử »

Để gọi một phương thức tĩnh từ một lớp con, hãy sử dụng từ khóa parent bên trong lớp con. Ở đây, phương thức tĩnh có thể là public hoặc protected

Trong bài viết này, chúng tôi sẽ đề cập đến sự khác biệt cơ bản giữa phương thức lớp và phương thức tĩnh trong Python và khi nào nên sử dụng phương thức lớp và phương thức tĩnh trong python

Phương thức lớp trong Python là gì?

Trình trang trí @classmethod là một trình trang trí chức năng tích hợp, là một biểu thức được đánh giá sau khi chức năng của bạn được xác định. Kết quả của đánh giá đó làm lu mờ định nghĩa chức năng của bạn. Một phương thức lớp nhận lớp dưới dạng đối số đầu tiên ngầm định, giống như một phương thức thể hiện nhận thể hiện

Cú pháp Phương thức lớp Python.  

class C[object]:
    @classmethod
    def fun[cls, arg1, arg2, ...]:
       ....
fun: function that needs to be converted into a class method
returns: a class method for function.
  • Một phương thức lớp là một phương thức được liên kết với lớp và không phải là đối tượng của lớp
  • Họ có quyền truy cập vào trạng thái của lớp vì nó nhận tham số lớp trỏ đến lớp chứ không phải thể hiện đối tượng
  • Nó có thể sửa đổi trạng thái lớp sẽ áp dụng trên tất cả các phiên bản của lớp. Ví dụ: nó có thể sửa đổi một biến lớp sẽ áp dụng cho tất cả các phiên bản

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

Một phương thức tĩnh không nhận được đối số đầu tiên ngầm định. Một phương thức tĩnh cũng là một phương thức được liên kết với lớp và không phải là đối tượng của lớp. Phương thức này không thể truy cập hoặc sửa đổi trạng thái lớp. Nó có mặt trong một lớp bởi vì nó có ý nghĩa đối với phương thức có mặt trong lớp

Cú pháp Python Phương thức tĩnh.  

class C[object]:
    @staticmethod
    def fun[arg1, arg2, ...]:
        ...
returns: a static method for function fun.

Phương thức lớp so với Phương thức tĩnh

Sự khác biệt giữa phương thức Lớp và phương thức tĩnh là

  • Phương thức lớp lấy cls làm tham số đầu tiên trong khi phương thức tĩnh không cần tham số cụ thể
  • Một phương thức lớp có thể truy cập hoặc sửa đổi trạng thái lớp trong khi một phương thức tĩnh không thể truy cập hoặc sửa đổi nó
  • Nói chung, các phương thức tĩnh không biết gì về trạng thái lớp. Chúng là các phương thức kiểu tiện ích 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 phương thức lớp phải có lớp làm tham số
  • Chúng tôi sử dụng trình trang trí @classmethod trong python để tạo một phương thức lớp và chúng tôi sử dụng trình trang trí @staticmethod để tạo một phương thức tĩnh trong python

Khi nào sử dụng lớp hoặc phương thức tĩnh?

  • Chúng tôi thường sử dụng phương thức lớp để tạo các phương thức xuất xưởng. Các phương thức xuất xưởng trả về các đối tượng lớp [tương tự như hàm tạo] cho các trường hợp sử dụng khác nhau
  • Chúng tôi thường sử dụng các phương thức tĩnh để tạo các hàm tiện ích

Làm cách nào để xác định một phương thức lớp và một phương thức tĩnh?

Để định nghĩa một phương thức lớp trong python, chúng tôi sử dụng trình trang trí @classmethod và để xác định một phương thức tĩnh, chúng tôi sử dụng trình trang trí @staticmethod.  
Chúng ta hãy xem 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 lớp Person. Bây giờ, python không hỗ trợ nạp chồng phương thức như C++ hoặc Java, vì vậy chúng tôi sử dụng các phương thức lớp để tạo các phương thức xuất xưởng. Trong ví dụ dưới đây, chúng tôi sử dụng một phương thức lớp để tạo một đối tượng người từ năm sinh

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

Phương thức tĩnh có thể được gọi mà không cần tạo đối tượng hoặc thể hiện. Chỉ cần tạo phương thức và gọi trực tiếp. Đây là một ý nghĩa trực giao với lập trình hướng đối tượng. chúng tôi gọi một phương thức mà không tạo đối tượng

Điều này chạy trực tiếp với khái niệm lập trình hướng đối tượng và có thể không được tán thành, nhưng đôi khi có thể hữu ích khi có một phương thức tĩnh

khóa học liên quan. Hoàn thành khóa học & bài tập lập trình Python

Ví dụ

phương pháp tĩnh

Thông thường, bạn muốn có các lệnh gọi hàm hoặc tạo một đối tượng mà bạn gọi các phương thức của nó. tuy nhiên bạn có thể làm một cái gì đó khác. gọi một phương thức trong một lớp mà không tạo một đối tượng

Trình diễn phương thức tĩnh bên dưới. Định nghĩa một lớp với một phương thức. Thêm từ khóa @staticmethod phía trên để làm cho nó tĩnh

1
2
3
4
5
6
class Music:
@staticmethod
def play[]:
print["*playing music*"]

Music.play[]

Các phương thức tĩnh bên trong một lớp

Một lớp có thể chứa cả phương thức tĩnh và không tĩnh. Nếu bạn muốn gọi các phương thức không tĩnh, bạn sẽ phải tạo một đối tượng. Mã bên dưới không hoạt động vì một đối tượng không được tạo

1
2
3
4
5
6
7
8
9
10
class Music:
@staticmethod
def play[]:
print["*playing music*"]

def stop[self]:
print["stop playing"]

Music.play[]
Music.stop[]

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

Các phương thức lớp bình thường và các phương thức tĩnh có thể được trộn lẫn [tại sao không?]
Điều này có thể rất khó hiểu. chúng tôi sử dụng cả khái niệm hướng đối tượng và lập trình chức năng trộn lẫn trong một lớp

Nếu bạn tạo một đối tượng, chúng ta có thể gọi các phương thức không tĩnh. Nhưng bạn cũng có thể gọi phương thức tĩnh mà không cần tạo đối tượng

1
2
3
4
5
6
7
8
9
10
11
12
class Music:
@staticmethod
def play[]:
print["*playing music*"]

def stop[self]:
print["stop playing"]

Music.play[]

obj = Music[]
obj.stop[]

Nhìn chung, các phương thức tĩnh là một khái niệm thú vị cần biết, nhưng trong thực tế, bạn hiếm khi sử dụng chúng. Đôi khi sử dụng các phương thức tĩnh có thể là dấu hiệu của việc có một thiết kế tồi

Bạn có thể sử dụng tên lớp để gọi một phương thức tĩnh không?

Các phương thức tĩnh được truy cập thông qua tên lớp , thay vì một đối tượng của lớp.

Một lớp có thể tĩnh trong Python không?

Các phương thức tĩnh trong Python cực kỳ giống với các phương thức cấp lớp của python, điểm khác biệt là một phương thức tĩnh được liên kết với một lớp chứ không phải các đối tượng của lớp đó. This means that a static method can be called without an object for that class.

Chủ Đề