Oui, pour l'exemple d'origine publié, la propriété fonctionnera exactement de la même manière qu'une simple variable d'instance «x».
C'est la meilleure chose à propos des propriétés python. De l'extérieur, elles fonctionnent exactement comme des variables d'instance! Ce qui vous permet d'utiliser des variables d'instance en dehors de la classe.
Cela signifie que votre premier exemple pourrait en fait utiliser une variable d'instance. Si les choses ont changé et que vous décidez de modifier votre implémentation et qu'une propriété est utile, l'interface avec la propriété serait toujours la même à partir du code en dehors de la classe. Un changement de variable d'instance à propriété n'a aucun impact sur le code en dehors de la classe.
De nombreux autres langages et cours de programmation indiqueront qu'un programmeur ne doit jamais exposer de variables d'instance, et utiliser à la place des `` getters '' et des `` setters '' pour toute valeur accessible depuis l'extérieur de la classe, même le cas simple cité dans la question.
Code en dehors de la classe avec de nombreux langages (par exemple Java) utilisent
object.get_i()
#and
object.set_i(value)
#in place of (with python)
object.i
#and
object.i = value
Et lors de l'implémentation de la classe, il y a de nombreux 'getters' et 'setters' qui font exactement comme votre premier exemple: répliquer simplement une variable d'instance. Ces getters et setters sont nécessaires car si l'implémentation de la classe change, tout le code en dehors de la classe devra changer. Mais les propriétés python permettent au code en dehors de la classe d'être le même que celui des variables d'instance. Ainsi, le code en dehors de la classe n'a pas besoin d'être modifié si vous ajoutez une propriété ou si vous avez une variable d'instance simple. Donc, contrairement à la plupart des langages orientés objet, pour votre exemple simple, vous pouvez utiliser la variable d'instance au lieu des `` getters '' et des `` setters '' qui ne sont vraiment pas nécessaires, sachant que si vous passez à une propriété à l'avenir, le code utilisant votre classe n'a pas besoin de changer.
Cela signifie que vous n'avez besoin de créer des propriétés que s'il y a un comportement complexe, et pour le cas simple très courant où, comme décrit dans la question, une simple variable d'instance est tout ce qui est nécessaire, vous pouvez simplement utiliser la variable d'instance.