Да, для исходного размещенного примера свойство будет работать точно так же, как просто наличие переменной экземпляра 'x'.
Это лучшее, что есть в свойствах python.Снаружи они работают точно так же, как переменные экземпляра!Что позволяет вам использовать переменные экземпляра извне класса.
Это означает, что ваш первый пример может фактически использовать переменную экземпляра.Если что-то изменилось, и тогда вы решите изменить свою реализацию, и свойство будет полезным, интерфейс со свойством будет таким же, как и в коде вне класса. Изменение переменной экземпляра на свойство не влияет на код вне класса.
Многие другие языки и курсы программирования будут указывать, что программист никогда не должен выставлять переменные экземпляра, а вместо этого использовать 'getters'и' setters 'для любого значения, к которому нужно получить доступ из-за пределов класса, даже в простом случае, указанном в вопросе.
Код вне класса со многими языками (например, Java) использует
object.get_i()
#and
object.set_i(value)
#in place of (with python)
object.i
#and
object.i = value
И при реализации класса есть много «получателей» и «установщиков», которые в точности соответствуют первому примеру: реплицируют просто переменную экземпляра.Эти методы получения и установки требуются, потому что, если реализация класса изменится, весь код за пределами класса должен будет измениться.Но свойства python позволяют коду вне класса быть таким же, как с переменными экземпляра.Поэтому нет необходимости изменять код вне класса, если вы добавляете свойство или имеете простую переменную экземпляра.Таким образом, в отличие от большинства объектно-ориентированных языков, для вашего простого примера вы можете использовать переменную экземпляра вместо «getters» и «setters», которые на самом деле не нужны, убедитесь, что еслив будущем вы переходите к свойству, код, использующий ваш класс, изменять не нужно.
Это означает, что вам нужно создавать свойства только в случае сложного поведения, и для очень простого простого случая, где, как описано ввопрос, простая переменная экземпляра - это все, что нужно, вы можете просто использовать переменную экземпляра.