Ở đâ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[];
?>
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[];
}
}
?>
Để 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