Правильно ли я использую принципы ООП? Я понимаю как создать класс, создать методы. инициализировать класс ... Но я не понимаю как правильно писать в стиле ООП. Большинство статей, которые я нашел, заканчиваются вызовом метода класса. Я написал авторизацию, скажите правильно ли я пишу в стиле ООП Файл csv выглядит login,password. Функция give_numdef give_num(message=''): """Give number""" while True: try: num = int(input(message)) except Exception: print('Надо ввести число!') continue break return num Файл main# !usr/bin/env python3 # Virtual Pet. import signin import need_func as nf num_func = 0 welcome_message = ( f'Добрый день!\n' f'Вы играете в игру My Pet\n' f'Вам надо ухаживать за вашим домашним питомцем.\n' f'Но для начало надо авторизоваться.\n' f'Выберете нужное вам действие:\n\n' f'1) Авторизоваться\n' f'2) Регистрация\n' f'3) Выйти\n' ) while num_func != 3: print(welcome_message) num_func = nf.give_num('Введите число от 1 до 3: ') if num_func == 1: """Sign in user.""" sign_in = signin.SignIn('users.csv') logs = sign_in.sign_in() if logs['status_code'] == 200: LOGIN = logs['login'] elif logs['status_code'] == 400: break print(LOGIN) nf.contin() nf.clear() elif num_func == 2: pass elif num_func == 3: break else: print('У меня нет такой команды, введите число в диапазоне от 1 до 3') Файл Work (родитель для авторизации и регистрации)# !usr/bin/env python # Work with login and Password. import csv import need_func as nf class Work(object): """Здесь будет документация""" __users = {} message_error = ( '1) Попробовать снова\n' '2) Выйти\n' ) def __init__(self, path): self.path = path with open(path, 'r') as f: for i in csv.reader(f): self.__users[i[0]] = i[1] @staticmethod def get_login(): """В будущем будет документация""" return input('Введите ваш логин: ') @staticmethod def get_password(): """В будущем будет документация""" return nf.give_text('Введите пароль: ') @property def users(self): return self.__users Сама авторизация# !usr/bin/env python # Sign in users import need_func as nf from worked import Work class SignIn(Work): """В будущем будет документация""" def __init__(self, path): super().__init__(path) def __check_login(self): """В будущем будет документация""" while True: login = Work.get_login() if login in self.users: return { 'status_code': 200, 'login': login } else: print('Такого логина не существует\n' + self.message_error) num_func = nf.give_num('Надо ввести число от 1 до 2: ') if num_func == 2: return { 'status_code': 400, 'login': login } else: continue def __check_password(self, login): """В будущем будет документация""" while True: password = Work.get_password() if self.users[login] == password: return 200 else: print('Извините, но пароль не подходит\n' + self.message_error) num_func = nf.give_num('Надо ввести число от 1 до 2: ') if num_func == 2: return 400 else: continue def sign_in(self): """В будущем будет документация""" logs = self.__check_login() if logs['status_code'] != 200: return logs login = logs['login'] nf.clear() status_password = self.__check_password(login) if status_password == 200: return { 'status_code': 200, 'login': login } else: return { 'status_code': 400, 'login': login } Пишите любые замечания!
Вы правильно используете принципы ООП в своем коде. Вы создаете классы, методы, инкапсулируете данные и функциональность. Ваш стиль написания кода можно назвать объектно-ориентированным.
Некоторые замечания и рекомендации:
Переименуйте класс "Work" в более информативное название, которое отражает его функциональность более точно.Хорошая практика использовать более информативные имена для переменных и методов. Например, методы "__check_login" и "__check_password" могут быть переименованы в более описательные.Добавьте документацию к методам и классам, чтобы было понятно, какой функционал они предоставляют.Проверяйте возвращаемые значения методов и делайте обработку ошибок по ситуации. Например, в случае неправильного ввода пароля, можно предложить пользователю попытаться ввести пароль еще раз.
В целом, ваш код выглядит хорошо структурированным и объектно-ориентированным. Продолжайте в том же духе и улучшайте свои навыки разработки в стиле ООП.
Вы правильно используете принципы ООП в своем коде. Вы создаете классы, методы, инкапсулируете данные и функциональность. Ваш стиль написания кода можно назвать объектно-ориентированным.
Некоторые замечания и рекомендации:
Переименуйте класс "Work" в более информативное название, которое отражает его функциональность более точно.Хорошая практика использовать более информативные имена для переменных и методов. Например, методы "__check_login" и "__check_password" могут быть переименованы в более описательные.Добавьте документацию к методам и классам, чтобы было понятно, какой функционал они предоставляют.Проверяйте возвращаемые значения методов и делайте обработку ошибок по ситуации. Например, в случае неправильного ввода пароля, можно предложить пользователю попытаться ввести пароль еще раз.В целом, ваш код выглядит хорошо структурированным и объектно-ориентированным. Продолжайте в том же духе и улучшайте свои навыки разработки в стиле ООП.