ใช่สำหรับตัวอย่างดั้งเดิมที่โพสต์คุณสมบัติจะทำงานเหมือนกับที่มีเพียงตัวแปรอินสแตนซ์ 'x'
นี่คือสิ่งที่ดีที่สุดเกี่ยวกับคุณสมบัติของหลาม จากภายนอกพวกมันทำงานเหมือนกับตัวแปรอินสแตนซ์! ซึ่งให้คุณใช้ตัวแปรอินสแตนซ์จากนอกคลาส
นี่หมายความว่าตัวอย่างแรกของคุณสามารถใช้ตัวแปรอินสแตนซ์ได้จริง หากสิ่งต่าง ๆ เปลี่ยนไปจากนั้นคุณตัดสินใจที่จะเปลี่ยนการใช้งานและคุณสมบัติมีประโยชน์ส่วนต่อประสานกับคุณสมบัติจะยังคงเหมือนเดิมจากโค้ดนอกคลาส การเปลี่ยนแปลงจากตัวแปรอินสแตนซ์เป็นคุณสมบัติไม่มีผลกระทบกับโค้ดนอกคลาส
หลายภาษาและหลักสูตรการเขียนโปรแกรมอื่น ๆ จะแนะนำว่าโปรแกรมเมอร์ไม่ควรเปิดเผยตัวแปรอินสแตนซ์และใช้ 'getters' และ 'setters' แทนเพื่อให้ค่าใด ๆ สามารถเข้าถึงได้จากนอกห้องเรียนแม้แต่กรณีง่าย ๆ ตามที่กล่าวถึงในคำถาม
รหัสนอกชั้นเรียนที่มีหลายภาษา (เช่น Java) ใช้
object.get_i()
#and
object.set_i(value)
#in place of (with python)
object.i
#and
object.i = value
และเมื่อใช้งานคลาสจะมี 'getters' และ 'setters' หลายตัวที่ทำตามตัวอย่างแรกของคุณ: ทำซ้ำตัวแปรอินสแตนซ์อย่างง่าย getters และ setters เหล่านี้จำเป็นเพราะถ้าการใช้งานคลาสเปลี่ยนแปลงรหัสทั้งหมดที่อยู่นอกคลาสจะต้องเปลี่ยน แต่คุณสมบัติของไพ ธ อนอนุญาตให้โค้ดนอกคลาสเหมือนกันกับตัวแปรอินสแตนซ์ ดังนั้นรหัสนอกคลาสไม่จำเป็นต้องเปลี่ยนถ้าคุณเพิ่มคุณสมบัติหรือมีตัวแปรอินสแตนซ์อย่างง่าย ดังนั้นไม่เหมือนกับภาษาเชิงวัตถุส่วนใหญ่สำหรับตัวอย่างง่ายๆที่คุณสามารถทำได้ใช้ตัวแปรอินสแตนซ์แทน 'getters' และ 'setters' ที่ไม่จำเป็นจริงๆให้ปลอดภัยในความรู้ที่ว่าถ้าคุณเปลี่ยนเป็นคุณสมบัติในอนาคตรหัสที่ใช้ ชั้นเรียนของคุณไม่จำเป็นต้องเปลี่ยน
ซึ่งหมายความว่าคุณต้องสร้างคุณสมบัติเท่านั้นหากมีพฤติกรรมที่ซับซ้อนและสำหรับกรณีทั่วไปที่ต้องการอธิบายตัวแปรอินสแตนซ์อย่างง่ายซึ่งเป็นสิ่งที่จำเป็นคุณสามารถใช้ตัวแปรอินสแตนซ์ได้