• Предмет: Информатика
  • Автор: blackzenya
  • Вопрос задан 5 месяцев назад

Напишіть клас User(користувач). Дайте йому два обов’язкові атрибути first_name i last_name, і ще "декілька", які зазвичай зберігаються в користувацькому профілі
(у мовний пароль у декілька)Напишіть метод describe_user(), який буде виводити повну інформацію про користувача.
зробити дві версій цей та другий з методом інкапсуляцій(щоб зовні неможна було змінювати)
на пайтоне

Ответы

Ответ дал: gorlenkonikita22
1

Ответ:

Версія без інкапсуляції:

class User:

   def __init__(self, first_name, last_name, email, age, country):

       self.first_name = first_name

       self.last_name = last_name

       self.email = email

       self.age = age

       self.country = country

   def describe_user(self):

       print(f"User's name: {self.first_name} {self.last_name}")

       print(f"Email address: {self.email}")

       print(f"Age: {self.age}")

       print(f"Country: {self.country}")

Версія з інкапсуляцією:

class User:

   def __init__(self, first_name, last_name, email, age, country):

       self._first_name = first_name

       self._last_name = last_name

       self._email = email

       self._age = age

       self._country = country

   def describe_user(self):

       print(f"User's name: {self._first_name} {self._last_name}")

       print(f"Email address: {self._email}")

       print(f"Age: {self._age}")

       print(f"Country: {self._country}")

   # Геттери для змінних класу

   def get_first_name(self):

       return self._first_name

   def get_last_name(self):

       return self._last_name

   def get_email(self):

       return self._email

   def get_age(self):

       return self._age

   def get_country(self):

       return self._country

   # Сеттери для змінних класу

   def set_first_name(self, first_name):

       self._first_name = first_name

   def set_last_name(self, last_name):

       self._last_name = last_name

   def set_email(self, email):

       self._email = email

   def set_age(self, age):

       self._age = age

   def set_country(self, country):

       self._country = country

У версії з інкапсуляцією, змінні класу починаються зі знаку "_" і не можуть бути доступні ззовні класу без використання методів-геттерів і сеттерів. За допомогою методів-геттерів можна отримати значення змінних класу, а за допомогою методів-сеттерів можна змінити значення змінних класу. Наприклад, щоб змінити ім'я користувача у версії з інкапсуляцією, треба викликати метод set_first_name() з параметром нового імені, а не змінювати змінну _first_name напряму.

Объяснение:

Ответ дал: mainnoobbrawl
1

Ответ: з методом інкапсуляції

class User:

   def __init__(self, first_name, last_name, email, password):

       self.first_name = first_name

       self.last_name = last_name

       self.email = email

       self.__password = password

   def describe_user(self):

       print(f"User: {self.first_name} {self.last_name}")

       print(f"Email: {self.email}")

       print(f"Password: {self.__password}")

   def set_password(self, new_password):

       self.__password = new_password

user1 = User("Py", "thon", "[email protected]", "password123")

user1.describe_user()

user1.set_password("newpassword123")  

user1.describe_user()


blackzenya: не плохо но він не повний
Вас заинтересует