Sì, per l'esempio originale pubblicato, la proprietà funzionerà esattamente come avere semplicemente una variabile di istanza 'x'.
Questa è la cosa migliore delle proprietà di Python. Dall'esterno, funzionano esattamente come le variabili di istanza! Ciò consente di utilizzare variabili di istanza esterne alla classe.
Questo significa che il tuo primo esempio potrebbe effettivamente utilizzare una variabile di istanza. Se le cose sono cambiate e decidi di cambiare l'implementazione e una proprietà è utile, l'interfaccia per la proprietà sarebbe comunque la stessa dal codice esterno alla classe. Una modifica dalla variabile di istanza alla proprietà non ha alcun impatto sul codice esterno alla classe.
Molti altri linguaggi e corsi di programmazione indicheranno che un programmatore non dovrebbe mai esporre le variabili di istanza, e utilizzare invece "getter" e "setter" per accedere a qualsiasi valore al di fuori della classe, anche nel caso semplice riportato nella domanda.
Codice esterno alla classe con molte lingue (ad es. Java)
object.get_i()
#and
object.set_i(value)
#in place of (with python)
object.i
#and
object.i = value
E quando si implementa la classe ci sono molti 'getter' e 'setter' che fanno esattamente come il tuo primo esempio: replicare semplicemente una variabile di istanza. Questi getter e setter sono necessari perché se l'implementazione della classe cambia, tutto il codice esterno alla classe dovrà cambiare. Ma le proprietà di Python consentono al codice esterno alla classe di essere uguale a quello delle variabili di istanza. Pertanto, il codice esterno alla classe non deve essere modificato se si aggiunge una proprietà o si dispone di una semplice variabile di istanza. Quindi, diversamente dalla maggior parte dei linguaggi orientati agli oggetti, per il tuo semplice esempio puoi usare la variabile di istanza invece di "getter" e "setter" che non sono realmente necessari, assicurati che se cambi in una proprietà in futuro, il codice usando la tua classe non deve cambiare.
Ciò significa che è necessario creare proprietà solo in presenza di comportamenti complessi e per il caso molto comune in cui, come descritto nella domanda, è sufficiente una semplice variabile di istanza, è possibile utilizzare semplicemente la variabile di istanza.