Python phương thức tĩnh là gì?
Bạn đang cố hiểu khái niệm về phương thức tĩnh và phương thức lớp trong Python? Show
Một phương thức tĩnh không thể truy cập các thuộc tính lớp hoặc thuộc tính thể hiện. Nó tương đương với một hàm bình thường nhưng nó là một phần của một lớp vì nó có chung ngữ cảnh logic. Một phương thức lớp không thể truy cập các thuộc tính thể hiện và nó thường được sử dụng làm phương thức xuất xưởng Trong hướng dẫn này, bạn sẽ thấy rõ cách sử dụng các phương thức lớp và tĩnh so với các phương thức thể hiện tiêu chuẩn Hãy viết mã Mục lụ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 mà bạn có thể gọi mà không cần tạo một thể hiện của một lớp. Nó giống như một chức năng tiêu chuẩn bên trong một lớp. Các phương thức tĩnh hoạt động như các phương thức tiện ích cho một lớp Để hiểu phương thức tĩnh trông như thế nào, hãy bắt đầu từ lớp Python đại diện cho phim Lớp này có một hàm tạo và một phương thức thể hiện cơ bản để in một mô tả ngắn gọn về một bộ phim
Khi bạn định nghĩa một phương thức thể hiện trong một lớp, phương thức đó sẽ nhận self làm đối số đầu tiên trong đó self là thể hiện của lớp mà phương thức đó được gọi Lưu ý rằng trong phương thức thể hiện, chúng tôi cũng đang in giá trị của bản thân để tôi có thể cho bạn thấy những gì bên trong nó Bây giờ hãy tạo một thể hiện của lớp này và gọi phương thức get_description() trong trường hợp đó.
Từ đầu ra, bạn có thể thấy rằng self là một đối tượng Movie, hay nói cách khác, một thể hiện của lớp Movie Và bây giờ hãy tạo một phương thức ví dụ khác gọi là get_years_from_release() sẽ cho chúng ta biết số năm đã trôi qua kể từ ngày phát hành của một bộ phim
Ghi chú. hãy nhớ nhập mô-đun ngày giờ nếu không bạn sẽ thấy ngoại lệ "tên không được xác định" Hãy sử dụng phương pháp này để in một thông báo cho biết bộ phim của chúng ta bao nhiêu tuổi…
thật tuyệt Bây giờ, hãy làm một thí nghiệm nhỏ… Chúng tôi sẽ thêm trình trang trí @staticmethod vào phương thức này và thử thực hiện lại nóChúng tôi nhận lại lỗi sau
Nguyên nhân của lỗi này là do một phương thức thể hiện, khi được gọi, sẽ chuyển hoàn toàn thể hiện dưới dạng tham số self Nhưng điều tương tự không xảy ra khi bạn trang trí một phương thức với @staticmethod Đó là bởi vì… Một phương thức tĩnh không dành riêng cho một thể hiện của một lớp và đó là lý do tại sao tham số self không áp dụng cho nó Một phương thức tĩnh không nhận self làm đối số đầu tiên, nó hoạt động giống như một hàm đơn giản với điểm khác biệt duy nhất là nó là một phần của lớpDựa trên điều này, chúng tôi sẽ
Lần này đầu ra của phương thức là chính xác
Ghi chú. ở đây chúng ta phải vượt qua bộ phim. release_year sang phương thức tĩnh trong khi trước đó, trong phương thức cá thể, năm phát hành được tự động đọc từ cá thể bằng cách sử dụng self. năm phát hành Và bên dưới bạn có thể thấy rằng chúng ta cũng có thể gọi phương thức tĩnh bằng cách sử dụng lớp thay vì thể hiện Đầu ra không thay đổi
Lý do tại sao bạn định nghĩa một phương thức tĩnh trong một lớp là phương thức đó có liên quan logic với chính lớp đó Đây là cách mã của chúng tôi cho đến nay ________số 8Thuộc tính đối tượng truy cập phương thức tĩnh có thể không?Đây là điều chúng ta đã thấy trong phần trước… Nhưng sự lặp lại là tốt để đảm bảo khái niệm này rõ ràng Các phương thức tĩnh trong Python không thể truy cập các thuộc tính của cá thể bởi vì, khác với các phương thức của cá thể, chúng không nhận self làm đối số Trong phần tiếp theo, tôi sẽ chỉ cho bạn một loại phương thức khác mà bạn có thể tạo trong lớp Python của mình, một phương thức khác với phương thức thể hiện hoặc phương thức tĩnh Phương thức lớp trong Python là gì?Một loại phương thức khác mà bạn có thể tạo trong lớp Python là phương thức lớp Để tôi nói cho bạn biết thêm về nó… Một phương thức lớp là một phương thức ngầm nhận lớp làm đối số đầu tiên. Các phương thức lớp thường được sử dụng làm phương thức xuất xưởng. Nói cách khác, chúng được sử dụng để tạo các thể hiện của một lớp tương tự như những gì một hàm tạo của lớp thực hiện Một phương thức lớp nhận cls (một lớp) làm đối số đầu tiên giống như một phương thức thể hiện nhận self (một thể hiện của lớp) làm đối số đầu tiên Đây là cách một phương thức lớp trông như thế nào
Hãy thử tạo một phương thức lớp tương tự như những gì chúng ta đã làm trong phần trước với một phương thức tĩnh Nhưng trước khi làm điều đó, chúng ta sẽ thêm một thuộc tính thể hiện khác vào lớp của chúng ta. thể loại phim Đây là mã được cập nhật… 0Hãy thử tạo một thể hiện và gọi cả hai phương thức để đảm bảo mã này hoạt động 1Hãy thêm một phương thức lớp mà chúng ta có thể sử dụng để tạo phim hành động… 2Lưu ý rằng phương thức chúng ta đã tạo đang sử dụng trình trang trí @classmethod Chúng tôi cũng đang in giá trị của cls để so sánh nó với giá trị của self trong đầu ra của chúng tôi Gọi phương thức của lớp bằng tên lớp Movie 3Mã hoạt động tốt Như bạn có thể thấy, chúng ta có thể tạo một thể hiện phim bằng phương thức lớp mới thay vì hàm tạo Ngoài ra, bạn có thể thấy sự khác biệt giữa các giá trị của cls và self không? Đối số cls là lớp gọi phương thức lớp. Bản thân Đối số là một thể hiện của lớp đó (hoặc một đối tượng). Sử dụng cls và self là một quy ước đặt tên tiêu chuẩn giữa các nhà phát triển Python nhưng nó không phải là thứ mà trình thông dịch Python thực thi. Bạn có thể gọi chúng theo cách khác nhưng điều này sẽ khiến mã của bạn khó đọc hơn đối với các nhà phát triển khác Khi nào nên sử dụng Phương thức tĩnh so với Hàm trong PythonBạn có thể tự hỏi… Tại sao bạn lại định nghĩa một phương thức tĩnh trong một lớp trong khi thực tế nó có thể là một hàm Python cơ bản? Rốt cuộc, nó không nhận được bất kỳ đối số cụ thể nào của lớp hoặc cá thể như cls hoặc self Chúng ta có thể thay thế một phương thức tĩnh bằng một hàm không? Một hàm có thể thay thế một phương thức tĩnh và có những tình huống trong đó việc sử dụng một hàm sẽ hợp lý hơn. Ví dụ: nếu phương thức tĩnh chung chung đến mức nó có thể phù hợp với ngữ cảnh của nhiều lớp. Trong trường hợp đó, nó có thể là một chức năng riêng biệt được gọi bởi mỗi lớp khi cần thiết Cũng thế… Bạn sẽ định nghĩa một phương thức tĩnh trong một lớp thay vì sử dụng một hàm nếu phương thức đó quá cụ thể đối với những gì lớp của bạn thực hiện nên việc giữ nó trong lớp sẽ hợp lý hơn Ví dụ… Hãy lấy mã mới nhất của chúng tôi và chuyển đổi thông tin phương thức tĩnh thành một hàm để xem nó hoạt động như thế nào 4Di chuyển phương thức tĩnh ra ngoài lớp và xóa trình trang trí @staticmethod Mã trở thành… 5Và cuối cùng, hãy gọi hàm này sau khi tạo một thể hiện của lớp Movie 6hoạt động tốt Các phương thức tĩnh có thể được kế thừa trong Python không?Tôi tự hỏi liệu chúng ta có thể kế thừa một phương thức tĩnh bên trong một lớp con không Hãy cùng kiểm chứng… Bắt đầu từ một phiên bản đơn giản hóa của lớp trước của chúng tôi 7Chúng tôi muốn xác minh xem một phương thức tĩnh có thể được kế thừa hay không Vì vậy, hãy định nghĩa một lớp mới không triển khai có tên là FantasyMovie kế thừa lớp Movie. 8Sau đó tạo một thể hiện của lớp này Hãy xem liệu chúng ta có thể gọi phương thức tĩnh của lớp cha get_years_from_release() hay không và liệu chúng ta có nhận được kết quả chính xác không 9chúng tôi làm Điều này có nghĩa rằng… Các phương thức tĩnh được kế thừa bởi một lớp con trong PythonCác phương thức lớp có thể được kế thừa trong Python không?Hãy làm một bài kiểm tra tương tự như bài kiểm tra mà chúng ta đã làm trong phần trước nhưng lần này với một phương thức lớp Bắt đầu với một lớp chỉ có hàm tạo và phương thức lớp 0Sau đó, sử dụng cùng một lớp con mà chúng ta đã tạo trước đó… 8Và gọi phương thức lớp bằng lớp con này 2Như bạn có thể thấy, chúng tôi đã tạo phiên bản thành công ngay cả khi tại thời điểm này, chúng tôi đang kết hợp hai thể loại phim. Giả tưởng và Hành động Sau tất cả, đây chỉ là một ví dụ để cho bạn thấy rằng bạn có thể gọi một phương thức lớp từ một lớp con Các phương thức lớp được kế thừa bởi một lớp con trong PythonSự kết luậnHãy tóm tắt lại cách phương thức thể hiện, phương thức lớp và phương thức tĩnh khác nhau dựa trên đối số đầu tiên của chúng
Và bây giờ là lúc để bạn bắt đầu sử dụng các phương thức này trong mã của mình. 🙂 Tiếp tục viết mã và tiếp tục học hỏi Bài viết liên quanCách triển khai thuật toán tìm kiếm nhị phân trong Python Cách kiểm tra xem chuỗi Python có chứa chuỗi con không Lỗi đệ quy Python. Đã vượt quá độ sâu đệ quy tối đa. Tại sao? Claudio Sabato Tôi là Trưởng nhóm công nghệ, Kỹ sư phần mềm và Huấn luyện viên lập trình. Tôi muốn giúp bạn trong hành trình trở thành Nhà phát triển siêu hạng Tại sao phương thức tĩnh được sử dụng trong Python?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
Phương thức tĩnh 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 . .
Phương pháp tĩnh với ví dụ là gì?Một phương thức tĩnh trong Java là một phương thức là một phần của lớp chứ không phải là một thể hiện của lớp đó . Mọi thể hiện của một lớp đều có quyền truy cập vào phương thức. Các phương thức tĩnh có quyền truy cập vào các biến lớp (biến tĩnh) mà không cần sử dụng đối tượng của lớp (thể hiện). Chỉ dữ liệu tĩnh có thể được truy cập bằng một phương thức tĩnh.
Phương thức tĩnh và phương thức lớp trong Python là gì?Các phương thức lớp không cần một thể hiện của lớp. Họ không thể truy cập thể hiện ( self ) nhưng họ có quyền truy cập vào chính lớp thông qua cls. Các phương thức tĩnh không có quyền truy cập vào cls hoặc self. Chúng hoạt động giống như các hàm thông thường nhưng thuộc về không gian tên của lớp |