Python: закрытые атрибуты класса
Пытаясь понять атрибуты private/public для класса, я начал играть с @property. Я не понимаю, почему, когда я определяю класс следующим образом:
class Number(object):
@property
def num1(self):
return self._num1
@num1.setter
def num1(self, i):
if i < 5:
raise ValueError("Small number!")
self._num1 = i
Когда я создаю объект, используя такой класс и устанавливаю значения для var num1, вот так:
def testNumber():
number = Number()
number.num1 = 22
number._num1=2
print number._num1
print number.num1
Это выведет 2 для num1 и _num1, избегая @property, установленного для num1. Теперь, если я установлю num1 с более низким значением, чем 5, исключение будет повышено. Как это работает для Pyhton? (не нужно добавлять, что я новичок в Python)