123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- # Практика по 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()
|