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)

0 ответов

Другие вопросы по тегам