Hướng dẫn python call class method within class method - python gọi phương thức lớp trong phương thức lớp
367 Show
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm. Tôi có mã này tính toán khoảng cách giữa hai tọa độ. Hai chức năng đều nằm trong cùng một lớp. Tuy nhiên, làm cách nào để gọi hàm 6 trong hàm 7?
Hỏi ngày 11 tháng 4 năm 2011 lúc 0:20Apr 11, 2011 at 0:20
0 Vì đây là các chức năng thành viên, hãy gọi nó là chức năng thành viên trong trường hợp, 8.
Đã trả lời ngày 11 tháng 4 năm 2011 lúc 0:24Apr 11, 2011 at 0:24
Jeff Mercadojeff MercadoJeff Mercado 124K31 Huy hiệu vàng239 Huy hiệu bạc258 Huy hiệu Đồng31 gold badges239 silver badges258 bronze badges 4 Điều đó không hoạt động vì 6 nằm trong lớp của bạn, vì vậy bạn cần tiền tố nó với tên lớp nếu bạn muốn tham khảo nó, như thế này: 0. Bạn không nên làm điều đó như vậy, mặc dù. Một cách tốt hơn để làm điều đó là tham khảo trực tiếp phương thức thông qua thể hiện lớp (đây là đối số đầu tiên của phương thức lớp), như vậy: 1.Đã trả lời ngày 11 tháng 4 năm 2011 lúc 0:24Apr 11, 2011 at 0:24
Jeff Mercadojeff MercadoAleksi Torhamo 124K31 Huy hiệu vàng239 Huy hiệu bạc258 Huy hiệu Đồng2 gold badges32 silver badges42 bronze badges 6 Trong hướng dẫn này, tôi sẽ giúp làm sáng tỏ những gì đằng sau các phương thức lớp, phương pháp tĩnh và phương pháp thể hiện thông thường. Nếu bạn phát triển sự hiểu biết trực quan về sự khác biệt của họ, bạn sẽ có thể viết Python hướng đối tượng để truyền đạt ý định của nó rõ ràng hơn và sẽ dễ dàng duy trì hơn trong thời gian dài. Ví dụ, lớp và phương thức 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:
Phương pháp thể hiệnPhương pháp đầu tiên trên 7, được gọi là 8, là một phương thức thể hiện thông thường. Đó là loại phương pháp 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 lấy một tham số, 8, chỉ ra một thể hiện là 7 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 chỉ một tham số).Thông qua tham số 8, 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 đối tượng.Họ không chỉ có thể sửa đổi trạng thái đối tượng, các phương thức thể hiện cũng có thể truy cập vào chính lớp thông qua thuộc tính 2. Đ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ớp.Phương pháp lớpHãy để so sánh điều đó với phương pháp thứ hai, 3. Tôi đã đánh dấu phương pháp này với một bộ trang trí 3 để gắn cờ nó như một phương pháp lớp.Thay vì chấp nhận tham số 8, các phương thức lớp lấy tham số 6 trỏ đến lớp và không phải là thể hiện đối tượng khi phương thức được gọi.Vì phương thức lớp chỉ có quyền truy cập vào đối số 6 này, nên nó có thể sửa đổi trạng thái thể hiện đối tượng. Điều đó sẽ yêu cầu truy cập vào 8. 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 trường hợp của lớp.Phương pháp tĩnhPhương pháp thứ ba, 9 được đánh dấu bằng một bộ trang trí 2 để gắn cờ nó như một phương pháp tĩnh.Loại phương thức này không lấy tham số 8 hay 6 (nhưng tất nhiên là nó miễn phí chấp nhận một số lượng tùy ý các tham số khác).Do đó, một phương pháp 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ế trong những dữ liệu mà họ có thể truy cập - và chúng chủ yếu là một cách để đặt tên cho các phương thức của bạn. Hãy cùng xem họ trong hành động!Tôi biết cuộc thảo luận này đã được lý thuyết khá cho đến thời điểm này. Và tôi tin rằng điều quan trọng là bạn phát triển sự hiểu biết trực quan về cách các loại phương pháp này khác nhau trong thực tế. Bây giờ chúng tôi sẽ đi qua một số ví dụ cụ thể. Hãy cùng xem cách các phương pháp này hoạt động như thế nào khi chúng ta gọi chúng. Chúng tôi 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 đó. 7 đã đượ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ì 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, những gì xảy ra khi chúng ta gọi một phương thức thể hiện:instance method: >>>
Điều này xác nhận rằng 8 (phương thức thể hiện) có quyền truy cập vào thể hiện đối tượng (được in là 5) thông qua đối số 8.Khi phương thức được gọi, Python thay thế đối số 8 bằng đối tượng phiên bản, 8. Chúng ta có thể bỏ qua đường cú pháp của cú pháp cuộc gọi chấm ( 9) và truyền đối tượng thể hiện theo cách thủ công để có được kết quả tương tự:>>>
Điều này xác nhận rằng 8 (phương thức thể hiện) có quyền truy cập vào thể hiện đối tượng (được in là 5) thông qua đối số 8.Khi phương thức được gọi, Python thay thế đối số 8 bằng đối tượng phiên bản, 8. Chúng ta có thể bỏ qua đường cú pháp của cú pháp cuộc gọi chấm ( 9) và truyền đối tượng thể hiện theo cách thủ công để có được kết quả tương tự:Bạn có thể đoán đ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 ra một thể hiện trước không?class method next: >>>
Điều này xác nhận rằng 8 (phương thức thể hiện) có quyền truy cập vào thể hiện đối tượng (được in là 5) thông qua đối số 8.Khi phương thức được gọi, Python thay thế đối số 8 bằng đối tượng phiên bản, 8. Chúng ta có thể bỏ qua đường cú pháp của cú pháp cuộc gọi chấm ( 9) và truyền đối tượng thể hiện theo cách thủ công để có được kết quả tương tự:Bạn có thể đoán đ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 ra 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 vào bản thân lớp thông qua thuộc tính 2. Điều này làm cho các phương thức thể hiện mạnh mẽ về các hạn chế truy cập - chúng có thể sửa đổi trạng thái trên thể hiện đối tượng và trên chính lớp.static method now:>>>
Điều này xác nhận rằng 8 (phương thức thể hiện) có quyền truy cập vào thể hiện đối tượng (được in là 5) thông qua đối số 8.Khi phương thức được gọi, Python thay thế đối số 8 bằng đối tượng phiên bản, 8. Chúng ta có thể bỏ qua đường cú pháp của cú pháp cuộc gọi chấm ( 9) và truyền đối tượng thể hiện theo cách thủ công để có được kết quả tương tự:Bạn có thể đoán đ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 ra 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 vào bản thân lớp thông qua thuộc tính 2. Điều này làm cho các phương thức thể hiện mạnh mẽ về các hạn chế truy cập - chúng có thể sửa đổi trạng thái trên thể hiện đối tượng và trên chính lớp.>>>
Điều này xác nhận rằng 8 (phương thức thể hiện) có quyền truy cập vào thể hiện đối tượng (được in là 5) thông qua đối số 8.Khi phương thức được gọi, Python thay thế đối số 8 bằng đối tượng phiên bản, 8. Chúng ta có thể bỏ qua đường cú pháp của cú pháp cuộc gọi chấm ( 9) và truyền đối tượng thể hiện theo cách thủ công để có được kết quả tương tự:Bạn có thể đoán đ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 ra 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 vào bản thân lớp thông qua thuộc tính 2. Điều này làm cho các phương thức thể hiện mạnh mẽ về các hạn chế truy cập - chúng có thể sửa đổi trạng thái trên thể hiện đối tượng và trên chính lớp.
>>>
Gọi >>> obj.classmethod()
('class method called', |