method_practic.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # Практика по property
  2. from string import digits
  3. from math import sqrt
  4. class User:
  5. def __init__(self, login, password) -> None:
  6. self.login = login
  7. self.password = password
  8. self.__secret = 'abracadabra'
  9. @property
  10. def secret(self):
  11. s = input("Введите ваш пароль: ")
  12. if s == self.password:
  13. return self.__secret
  14. else:
  15. raise ValueError("Доступ закрыт")
  16. @property
  17. def password(self):
  18. print('getter called')
  19. return self.__password
  20. @staticmethod
  21. def is_include_number(password):
  22. for digit in digits:
  23. if digit in password:
  24. return True
  25. return False
  26. @password.setter
  27. def password(self, value):
  28. print('setter called')
  29. if not isinstance(value, str):
  30. raise TypeError("Пароль должен быть строкой")
  31. if len(value) < 4:
  32. raise ValueError("Длина пароля должна быть не менее 4-ех символов")
  33. if len(value) > 12:
  34. raise ValueError("Длина пароля должна быть не более 12-и символов")
  35. if not User.is_include_number(value):
  36. raise ValueError("Пароль должен содержать хотя бы одну цифру")
  37. self.__password = value
  38. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  39. class Point:
  40. def __init__(self):
  41. self.x = None
  42. self.y = None
  43. def set_coordinates(self, x, y):
  44. self.x = x
  45. self.y = y
  46. def get_distance_to_origin(self):
  47. if self.x is None or self.y is None:
  48. return None
  49. return sqrt(self.x ** 2 + self.y ** 2)
  50. def display(self):
  51. if self.x is None or self.y is None:
  52. print('Координаты не заданы')
  53. else:
  54. print(f'Point({self.x}, {self.y})')
  55. def test_1():
  56. p3 = Point()
  57. p3.display()
  58. print(p3.get_distance_to_origin())
  59. p3.x = 4
  60. p3.display()
  61. print(p3.get_distance_to_origin())
  62. p3.y = 3
  63. p3.display()
  64. print(p3.get_distance_to_origin())
  65. def main():
  66. # user1 = User('Ivan', '123df')
  67. test_1()
  68. if __name__ == '__main__':
  69. main()