Có, đối với ví dụ ban đầu được đăng, thuộc tính sẽ hoạt động chính xác giống như chỉ cần có một biến đối tượng 'x'.
Đây là điều tốt nhất về các thuộc tính python. Từ bên ngoài, chúng hoạt động chính xác như các biến thể hiện! Cho phép bạn sử dụng các biến thể hiện từ bên ngoài lớp.
Điều này có nghĩa là ví dụ đầu tiên của bạn thực sự có thể sử dụng một biến thể hiện. Nếu mọi thứ thay đổi, và sau đó bạn quyết định thay đổi triển khai của mình và một thuộc tính là hữu ích, giao diện cho thuộc tính vẫn sẽ giống với mã bên ngoài lớp. Một thay đổi từ biến đối tượng sang thuộc tính không có tác động đến mã bên ngoài lớp.
Nhiều ngôn ngữ và khóa học lập trình khác sẽ hướng dẫn rằng một lập trình viên không bao giờ nên phơi bày các biến thể hiện, và thay vào đó sử dụng 'getters' và 'setters' cho bất kỳ giá trị nào được truy cập từ bên ngoài lớp, ngay cả trường hợp đơn giản như được trích dẫn trong câu hỏi.
Mã bên ngoài lớp có nhiều ngôn ngữ (ví dụ Java) sử dụng
object.get_i()
#and
object.set_i(value)
#in place of (with python)
object.i
#and
object.i = value
Và khi triển khai lớp, có nhiều 'getters' và 'setters' hoạt động chính xác như ví dụ đầu tiên của bạn: sao chép một biến đối tượng đơn giản. Các getters và setters này là bắt buộc bởi vì nếu việc triển khai lớp thay đổi, tất cả các mã bên ngoài lớp sẽ cần phải thay đổi. Nhưng các thuộc tính python cho phép mã bên ngoài lớp giống như với các biến thể hiện. Vì vậy, mã bên ngoài lớp không cần phải thay đổi nếu bạn thêm một thuộc tính hoặc có một biến thể hiện đơn giản. Vì vậy, không giống như hầu hết các ngôn ngữ hướng đối tượng, đối với ví dụ đơn giản của bạn, bạn có thể sử dụng biến đối tượng thay vì 'getters' và 'setters' thực sự không cần thiết, đảm bảo rằng bạn sẽ thay đổi thành một thuộc tính trong tương lai, sử dụng mã trong tương lai lớp học của bạn không cần thay đổi.
Điều này có nghĩa là bạn chỉ cần tạo thuộc tính nếu có hành vi phức tạp và trong trường hợp đơn giản rất phổ biến trong đó, như được mô tả trong câu hỏi, một biến đối tượng đơn giản là tất cả những gì cần thiết, bạn chỉ có thể sử dụng biến thể hiện.