Yêu cầu thg 8 30, 2017 2:40 SA 215 0 1
  • 215 0 1
+1

Hỏi về khai báo định danh (identifier) trong Python kiểu _a __a hay __a__

Chia sẻ
  • 215 0 1

Xin chào mọi người! Em mới học Python. Mọi người cho em hỏi là khi định danh trong Python mà mình sử dụng gạch dưới kiểu _a a hay __a thì nó có ý nghĩa gì? Có gì khác nhau? Cái này là để người đọc code hiểu hay để chương trình nhận biết ạ? Nó có phải gần giống Access Modifier trong Java không ạ? Em xin cảm ơn!

1 CÂU TRẢ LỜI


Đã trả lời thg 8 30, 2017 3:26 SA
Đã được chấp nhận
+6

Đầu tiên:

Nó có phải gần giống Access Modifier trong Java/C# không ? Không

Về các dấu gạch dưới:

  • _something: được sử dụng với mục đích chính là weak "internal use". Nghĩa là khi bạn viết một class C có method _m() thì khi gọi from A import * sẽ không import module _m() này vào. Mục đích phụ: để đại diện cho những thứ vứt đi, ví dụ bạn chỉ muốn lấy 2 phần tử đầu và cuối của 1 mảng: head, *_, tail = array, thì khi này _ sẽ là phần ở giữa, chả dùng để làm gì cả, nên chả cần cái tên nào cả. Ngoài ra còn mục đích nữa là để lưu trữ giá trị cuối cùng trong Python, cái này ít dùng, bạn có thể tự tìm hiểu thêm.
  • __something: nó đơn thuần là một convention, đại diện cho một attribute của class. Trong class C có __something thì nó sẽ được thay thế bởi _C__something khi chạy bởi trình thông dịch.
  • __ something__: python built-in method
Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí