JavaScript is required

Khẳng định nào là đúng về chương trình dưới đây?

A.

Chương trình có lỗi xảy ra vì ' x ' là thuộc tính private, không thể truy cập được từ bên ngoài lớp.

B.

Chương trình chạy bình thường và kết quả được in ra là 1.

C.

Chương trình có lỗi xảy ra vì ' __y ' là thuộc tính private, không thể truy cập được từ bên ngoài lớp.

D.

Chương trình chạy bình thường và kết quả được in ra là 45.

Trả lời:

Đáp án đúng: D


Trong Python, một thuộc tính được coi là private khi nó bắt đầu bằng hai dấu gạch dưới __ (ví dụ: __y). Python thực hiện name mangling cho các thuộc tính này để tránh xung đột tên trong các lớp con. Điều này có nghĩa là bạn không thể truy cập trực tiếp thuộc tính private từ bên ngoài lớp bằng tên gốc của nó.

Tuy nhiên, thuộc tính chỉ có một dấu gạch dưới (ví dụ: _x) được coi là protected theo quy ước, không có cơ chế bảo vệ nghiêm ngặt như thuộc tính private. Mặc dù nó được khuyến nghị không nên truy cập trực tiếp từ bên ngoài lớp, nhưng Python không ngăn cản điều này.

Trong đoạn mã đã cho:

  • _x là protected và có thể truy cập từ bên ngoài lớp (mặc dù không được khuyến nghị).
  • __y là private và không thể truy cập trực tiếp từ bên ngoài lớp bằng tên __y.

Do đó, khi bạn cố gắng truy cập obj.__y, Python sẽ báo lỗi AttributeError vì thuộc tính __y không thể truy cập trực tiếp từ bên ngoài lớp. Vì vậy, chương trình sẽ báo lỗi do truy cập thuộc tính private __y.

Tổng hợp 200 câu hỏi trắc nghiệm lập trình Python có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.


50 câu hỏi 60 phút

Câu hỏi liên quan