Nếu 'rõ ràng tốt hơn ẩn', tại sao không có công cụ sửa đổi truy cập rõ ràng trong Python: Công khai, Được bảo vệ, Riêng tư, v.v.?
Tôi biết rằng ý tưởng là lập trình viên nên biết phải làm gì thông qua một gợi ý - không cần sử dụng 'sức mạnh vũ phu'. Nhưng IMO 'Đóng gói' hoặc 'che giấu thông tin' không chỉ để tránh mọi người, đó là một câu hỏi về tổ chức và cấu trúc: các lớp phát triển của bạn nên tự xác định, phạm vi và đường viền được phân định rõ ràng, giống như các hệ thống vật lý.
Ai đó có thể vui lòng giúp tôi giải thích rõ ràng về lý do tại sao các hạn chế truy cập được ngụ ý thay vì rõ ràng trong Python, một ngôn ngữ có vẻ gần như hoàn hảo?
Chỉnh sửa: Cho đến nay tôi đã thấy 3 câu trả lời được đề xuất và tôi nhận ra rằng có 2 phần cho câu hỏi của tôi:
Tại sao không có từ khóa, ví dụ
private def myFunc(): dostuff....
thay vì IMO xấu xí và khó gõ dấu gạch dưới. Nhưng đó không phải là điểm quan trọng.
Quan trọng hơn:
Tại sao những sửa đổi truy cập này chỉ 'đề xuất' hoặc gợi ý và không được thi hành. Sẽ khó thay đổi sau này? Rất đơn giản để thay đổi 'được bảo vệ' thành 'công khai' - và nếu bạn có một chuỗi thừa kế phức tạp gây khó khăn, bạn có một thiết kế kém - thiết kế của bạn nên được tinh chỉnh thay vì dựa vào một tính năng ngôn ngữ giúp dễ viết mã cấu trúc kém.
Khi các công cụ sửa đổi truy cập được thi hành, mã của bạn sẽ tự động được ngăn cách - bạn BIẾT rằng các phân đoạn nhất định nằm ngoài phạm vi để bạn không phải đối phó với chúng trừ khi và khi cần thiết. Và, nếu thiết kế của bạn không tốt và bạn thấy mình liên tục di chuyển mọi thứ vào và ra khỏi các phạm vi khác nhau, ngôn ngữ có thể giúp bạn dọn dẹp hành động của mình.
Tôi yêu Python rất nhiều, tôi thấy điểm thứ 2 này là một thiếu sót nghiêm trọng. Và tôi vẫn chưa thấy một câu trả lời tốt cho việc này.
private def whatever
, đó class x: def whatever(self): pass
là một lối tắt cho class x: pass; x.whatever = lambda self: pass
, vì vậy về cơ bản, bạn sẽ cần một bộ điều chỉnh riêng để gán