Làm thế nào để bạn truy cập một chức năng lớp trong python?
Một phương thức lớp là một phương thức được chia sẻ giữa tất cả các đối tượng. Để gọi một phương thức của lớp, hãy đặt lớp đó làm đối số đầu tiên Show
Các phương thức của lớp có thể được gọi từ các thể hiện và từ chính lớp đó. Tất cả đều sử dụng cùng một phương pháp. Phương thức có thể sử dụng các biến và phương thức của lớp 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ụví dụ phương pháp lớp họcĐể biến một phương thức thành một classmethod, hãy thêm @classmethod trước định nghĩa phương thức. Là tham số, phương thức luôn lấy lớp Ví dụ dưới đây định nghĩa một phương thức lớp. Phương thức lớp sau đó có thể được sử dụng bởi chính lớp đó. Trong ví dụ này, phương thức lớp sử dụng tên thuộc tính lớp 1 class Fruit: Bạn có thể sử dụng một phương thức lớp với cả đối tượng và lớp 1 apple = Fruit() Tên tham số hiện thuộc về lớp, nếu bạn thay đổi tên bằng cách sử dụng một đối tượng, nó sẽ bỏ qua điều đó. Nhưng nếu bạn làm điều đó theo lớp thì nó sẽ thay đổi, ví dụ bên dưới 1 apple.name="Apple" viết thay thếThường thì ký hiệu Pythonic được sử dụng, nhưng điều này không bắt buộc 1 class Fruit: classmethod vs staticmethodGiống như một phương thức tĩnh, một phương thức lớp không cần một đối tượng được khởi tạo Một phương thức lớp khác với một phương thức tĩnh ở chỗ một phương thức tĩnh không biết về chính lớp đó. Trong một phương thức lớp, tham số luôn là chính lớp đó một phương thức tĩnh không biết gì về lớp hoặc thể hiện. Bạn cũng có thể sử dụng một cuộc gọi chức năng một phương thức lớp nhận lớp khi phương thức được gọi. Nó biết về các thuộc tính và phương thức của lớp Nếu bạn phát triển sự hiểu biết trực quan về sự khác biệt của chúng, bạn sẽ có thể viết Python hướng đối tượng để truyền đạt ý định rõ ràng hơn và sẽ dễ bảo trì hơn trong thời gian dài Tiền thưởng miễn phí. Nhấp vào đây để có quyền truy cập vào Bảng cheat Python OOP miễn phí chỉ cho bạn các hướng dẫn, video và sách hay nhất để tìm hiểu thêm về Lập trình hướng đối tượng với Python Các phương thức sơ thẩm, lớp và tĩnh - Tổng quanHãy bắt đầu bằng cách viết một lớp (Python 3) chứa các ví dụ đơn giản cho cả ba loại phương thức ________số 8_______ Loại bỏ các quảng cáo Phương thức sơ thẩmPhương thức đầu tiên trên 9, được gọi là 0, là một phương thức thể hiện thông thường. Đó là loại phương thức cơ bản, không rườm rà mà bạn sẽ sử dụng hầu hết thời gian. Bạn có thể thấy phương thức nhận một tham số, 1, trỏ đến một thể hiện của 9 khi phương thức được gọi (nhưng tất nhiên các phương thức thể hiện có thể chấp nhận nhiều hơn một tham số)Thông qua tham số 1, các phương thức thể hiện có thể tự do truy cập các thuộc tính và các phương thức khác trên cùng một đối tượng. Điều này mang lại cho họ rất nhiều sức mạnh khi sửa đổi trạng thái của một đối tượngKhông chỉ có thể sửa đổi trạng thái đối tượng, các phương thức thể hiện còn có thể truy cập chính lớp đó thông qua thuộc tính 4. Điều này có nghĩa là các phương thức thể hiện cũng có thể sửa đổi trạng thái lớpphương pháp lớpHãy so sánh điều đó với phương pháp thứ hai, 5. Tôi đã đánh dấu phương thức này bằng một công cụ trang trí để đánh dấu nó là một phương thức của lớpThay vì chấp nhận một tham số 1, các phương thức lớp lấy một tham số 8 trỏ đến lớp—chứ không phải thể hiện của đối tượng—khi phương thức được gọiBởi vì phương thức lớp chỉ có quyền truy cập vào đối số 8 này, nên nó không thể sửa đổi trạng thái đối tượng. Điều đó sẽ yêu cầu quyền truy cập vào 1. Tuy nhiên, các phương thức lớp vẫn có thể sửa đổi trạng thái lớp áp dụng trên tất cả các phiên bản của lớpPhương thức tĩnhPhương thức thứ ba, 1 được đánh dấu bằng một công cụ trang trí để đánh dấu nó là một phương thức tĩnhLoại phương thức này không nhận tham số 1 cũng như tham số 8 (nhưng tất nhiên có thể chấp nhận một số tùy ý các tham số khác)Do đó, một phương thức tĩnh không thể sửa đổi trạng thái đối tượng cũng như trạng thái lớp. Các phương thức tĩnh bị hạn chế về loại dữ liệu mà chúng có thể truy cập - và chúng chủ yếu là một cách để tạo không gian tên cho các phương thức của bạn Hãy xem chúng hoạt độngTôi biết cuộc thảo luận này đã khá lý thuyết cho đến thời điểm này. Và tôi tin rằng điều quan trọng là bạn phải phát triển sự hiểu biết trực quan về sự khác biệt của các loại phương pháp này trong thực tế. Bây giờ chúng ta sẽ đi qua một số ví dụ cụ thể Chúng ta hãy xem các phương thức này hoạt động như thế nào khi chúng ta gọi chúng. Chúng ta sẽ bắt đầu bằng cách tạo một thể hiện của lớp và sau đó gọi ba phương thức khác nhau trên đó 9 được thiết lập theo cách mà mỗi phương thức triển khai trả về một bộ chứa thông tin để chúng tôi theo dõi những gì đang diễn ra — và phần nào của lớp hoặc đối tượng mà phương thức có thể truy cậpĐây là những gì xảy ra khi chúng ta gọi một phương thức thể hiện >>>
Điều này xác nhận rằng 0 (phương thức thể hiện) có quyền truy cập vào thể hiện đối tượng (được in dưới dạng 7) thông qua đối số 1Khi phương thức được gọi, Python sẽ thay thế đối số 1 bằng đối tượng thể hiện, 0. Chúng ta có thể bỏ qua đường cú pháp của cú pháp gọi dấu chấm ( 1) và chuyển đối tượng thể hiện theo cách thủ công để nhận được kết quả tương tự>>>
Bạn có đoán được điều gì sẽ xảy ra nếu bạn cố gắng gọi phương thức mà không tạo một thể hiện trước không? Nhân tiện, các phương thức thể hiện cũng có thể truy cập chính lớp đó thông qua thuộc tính 4. Điều này làm cho các phương thức cá thể trở nên mạnh mẽ về mặt hạn chế truy cập - chúng có thể sửa đổi trạng thái trên cá thể đối tượng và trên chính lớp đóHãy thử phương thức lớp tiếp theo >>>
Việc gọi 3 cho chúng ta thấy rằng nó không có quyền truy cập vào đối tượng 7 mà chỉ truy cập vào đối tượng 5, đại diện cho chính lớp đó (mọi thứ trong Python đều là một đối tượng, ngay cả bản thân các lớp)Lưu ý cách Python tự động chuyển lớp làm đối số đầu tiên cho hàm khi chúng ta gọi 6. Gọi một phương thức trong Python thông qua cú pháp dấu chấm sẽ kích hoạt hành vi này. Tham số 1 trên các phương thức cá thể hoạt động theo cùng một cáchXin lưu ý rằng việc đặt tên các tham số này là 1 và 8 chỉ là một quy ước. Bạn có thể dễ dàng đặt tên cho chúng là 0 và 1 và nhận được kết quả tương tự. Tất cả những gì quan trọng là chúng được đặt ở vị trí đầu tiên trong danh sách tham số cho phương thứcĐã đến lúc gọi phương thức tĩnh ngay bây giờ >>>
Bạn có thấy cách chúng tôi gọi 2 trên đối tượng và có thể thực hiện thành công không? Đằng sau hậu trường Python chỉ đơn giản thực thi các hạn chế truy cập bằng cách không chuyển vào đối số 1 hoặc 8 khi một phương thức tĩnh được gọi bằng cú pháp dấu chấmĐiều này xác nhận rằng các phương thức tĩnh không thể truy cập trạng thái đối tượng cũng như trạng thái lớp. 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 (và của mọi cá thể) Bây giờ, hãy xem điều gì sẽ xảy ra khi chúng ta cố gắng gọi các phương thức này trên chính lớp đó - mà không tạo trước một thể hiện đối tượng
Chúng tôi đã có thể gọi 3 và 2 tốt, nhưng cố gắng gọi phương thức thể hiện 7 không thành công với một 8Và điều này được mong đợi — lần này chúng ta không tạo một thể hiện đối tượng và thử gọi một hàm thể hiện trực tiếp trên chính bản thiết kế của lớp. Điều này có nghĩa là không có cách nào để Python đưa vào đối số 1 và do đó lệnh gọi không thành côngĐiều này sẽ làm cho sự khác biệt giữa ba loại phương thức này rõ ràng hơn một chút. Nhưng tôi sẽ không để nó ở đó. Trong hai phần tiếp theo, tôi sẽ xem xét hai ví dụ thực tế hơn một chút về thời điểm sử dụng các loại phương thức đặc biệt này Tôi sẽ dựa trên các ví dụ của mình xung quanh lớp 0 cơ bản này
Loại bỏ các quảng cáo Nhà Máy Pizza Ngon Với >>> obj = MyClass()
>>> obj.method()
('instance method called', |