# Практика по property

from string import digits

class User:

    def __init__(self, login, password) -> None:
        self.login = login
        self.password = password
        self.__secret = 'abracadabra'
        
    @property
    def secret(self):
        s = input("Введите ваш пароль: ")
        if s == self.password:
            return self.__secret
        else:
            raise ValueError("Доступ закрыт")

    @property
    def password(self):
        print('getter called')
        return self.__password

    @staticmethod
    def is_include_number(password):
        for digit in digits:
            if digit in password:
                return True
        return False

    @password.setter
    def password(self, value):
        print('setter called')
        if not isinstance(value, str):
            raise TypeError("Пароль должен быть строкой")
        if len(value) < 4:
            raise ValueError("Длина пароля должна быть не менее 4-ех символов")
        if len(value) > 12:
            raise ValueError("Длина пароля должна быть не более 12-и символов")
        if not User.is_include_number(value):
            raise ValueError("Пароль должен содержать хотя бы одну цифру")
        self.__password = value


def main():
    user1 = User('Ivan', '123df')


if __name__ == '__main__':
    main()