# Практика по property from string import digits from math import sqrt 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 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class Point: def __init__(self): self.x = None self.y = None def set_coordinates(self, x, y): self.x = x self.y = y def get_distance_to_origin(self): if self.x is None or self.y is None: return None return sqrt(self.x ** 2 + self.y ** 2) def display(self): if self.x is None or self.y is None: print('Координаты не заданы') else: print(f'Point({self.x}, {self.y})') def test_1(): p3 = Point() p3.display() print(p3.get_distance_to_origin()) p3.x = 4 p3.display() print(p3.get_distance_to_origin()) p3.y = 3 p3.display() print(p3.get_distance_to_origin()) def main(): # user1 = User('Ivan', '123df') test_1() if __name__ == '__main__': main()